xquery version '3.1'; (:~ tests for position test @author: Andy Bunce @date: 2025/08/11 :) module namespace test = 'lsp/test/position'; import module namespace pos="lsp/position" at "../webapp/lsp/position.xqm"; (:~ count lines. :) declare %unit:test function test:line-count() { let $text:=unparsed-text("sample.docs/pdfbox.xqm") let $nl:= index-of(string-to-codepoints($text),10)=>trace("SSS ") return unit:assert-equals(count($nl),521) }; (:~ convert position. :) declare %unit:test function test:resolvePosition() { let $text:=unparsed-text("sample.docs/pdfbox.xqm") let $p:= pos:resolvePosition($text,pos:Position(518,33)) return unit:assert-equals($p,18751) }; (:~ convert all position. :) declare %unit:test function test:toPosition() { let $text:=unparsed-text("sample.docs/pdfbox.xqm") let $nl:= index-of(string-to-codepoints($text),10) return for $i in 0 to string-length($text)-1 let $pos:=pos:toPosition($text,$i,$nl) return unit:assert-equals($i,pos:resolvePosition($text,$pos)) }; (:~ convert position. :) declare %unit:test function test:line() { let $text:=unparsed-text("sample.docs/pdfbox.xqm") let $nl:= index-of(string-to-codepoints($text),10) let $p:= pos:lineAt($nl,18752)=>trace("AA") return unit:assert-equals($p,518) };