Test Suite

Pass?

Package Name

Coverage

(type)

(const)

(func)

:doc

:bigospace

:bigotime

Pass

vx/core

38% 89/230

13% 10/76

13% 2/15

55% 77/139

91% 239/261

0% 1/170

0% 1/170

Pass?

Name

Test

Expected

Actual

Pass

boolean

(test-true true)

true

true

Pass

boolean

(test-false false)

false

false

Pass

boolean

(test-true (boolean true))

true

true

Pass

boolean

(test-false (boolean false))

false

false

Pass

float

(test 4.5 (float 4.5))

4.5

4.5

Pass

func

(test 5 (let [funcvar : + := +] (funcvar 2 3)))

5

5

Pass

funclist

(test 2 (length (funclist + -)))

2

2

Pass

int

(test-true (is-int 4))

true

true

Pass

int

(test-true (is-int "4"))

true

true

Pass

int

(test-true (is-int infinity))

true

true

Pass

int

(test-true (is-int neginfinity))

true

true

Pass

int

(test-true (is-int notanumber))

true

true

Pass

int

(test-false (is-int "a"))

false

false

Pass

int

(test-false (is-int 5.5))

false

false

Pass

msgblock

(test (decimal (msgblock :msgs (msglist (msg :text "Err")))) (decimal (msg :text "Err")))

0.0

0.0

Pass

msgblock

(test (decimal (msgblock :msgs (msglist (msg :text "Err")))) (let : decimal [mymsgblock : msgblock := (msgblock (msg :text "Err"))] (decimal (copy mymsgblock mymsgblock))))

0.0

0.0

Pass

msgblocklist

(test (msgblocklist (msgblock (msg :text "Err"))) (let : msgblocklist [mymsgblock : msgblock := (msgblock (msg :text "Err"))] (msgblocklist mymsgblock mymsgblock)))

(msgblocklist (msgblock :msgs (msglist (msg :text "Err"))))

(msgblocklist (msgblock :msgs (msglist (msg :text "Err"))))

Pass

msglist

(test (msglist (msg :text "Err")) (let : msglist [mymsg : msg := (msg :text "Err")] (msglist mymsg mymsg)))

(msglist (msg :text "Err"))

(msglist (msg :text "Err"))

Pass

string

(test "a" (string "a"))

"a"

"a"

Pass

string

(test "ab" (string "a" "b"))

"ab"

"ab"

Pass

stringlist

(test (new : stringlist "a" "b" "c") (stringlist (anylist "a" (stringlist "b" "c"))))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

false

(test-false false)

false

false

Pass

true

(test-true true)

true

true

Pass

!

(test-false false)

false

false

Pass

!

(test-false (! true))

false

false

Pass

!=

(test-ne true false)

true

false

Pass

!=

(test-ne "a" "b")

"a"

"b"

Pass

*

(test 6 (* 3 2))

6

6

Pass

*

(test -10 (* 5 -2))

-10

-10

Pass

*_1

(test 6.4 (* 3.2 2))

6.4

6.4

Pass

*_1

(test -10.2 (* 5.1 -2))

-10.2

-10.2

Pass

*_2

(test 24 (* 3 2 4))

24

24

Pass

*_2

(test -20 (* 5 -2 2))

-20

-20

Pass

*_3

(test 24 (* 3 2 4))

24

24

Pass

*_3

(test -20 (* 5 -2 2))

-20

-20

Pass

+

(test 5 (+ 2 3))

5

5

Pass

+

(test 3 (+ 5 -2))

3

3

Pass

+_1

(test 5 (+ 2 3))

5

5

Pass

+_1

(test 3 (+ 5 -2))

3

3

Pass

+1

(test 3 (+1 2))

3

3

Pass

+1

(test -1 (+1 -2))

-1

-1

Pass

-

(test 1 (- 3 2))

1

1

Pass

-

(test 7 (- 5 -2))

7

7

Pass

-_1

(test 5 (+ 2 3))

5

5

Pass

-_1

(test 3 (+ 5 -2))

3

3

Pass

-1

(test 1 (-1 2))

1

1

Pass

-1

(test -3 (-1 -2))

-3

-3

Pass

/

(test 3 (/ 6 2))

3

3

Pass

/

(test -5 (/ 10 -2))

-5

-5

Pass

<

(test-true (< 2 3))

true

true

Pass

<_1

(test-true (< 2 3))

true

true

Pass

<_1

(test-true (< "b" "d" "z"))

true

true

Pass

<-

(test (* (+ (- 5 3) 3) 2) (<- 5 (- 3) (+ 3) (* 2)))

10

10

Pass

<<-

(test (* (+ (- 3 5) 3) 2) (<<- 5 (- 3) (+ 3) (* 2)))

2

2

Pass

<=

(test-true (<= 2 3))

true

true

Pass

<=_1

(test-true (<= "b" "d" "z"))

true

true

Pass

=

(test-true (= true true))

true

true

Pass

=

(test-true (= 2 2))

true

true

Pass

=

(test-true (= "a" "a"))

true

true

Pass

=

(test-true (= (stringlist "a" "b" "c") (new : stringlist "a" "b" "c")))

true

true

Pass

=

(test-true (= (stringmap :a "1" :b "2") (new : stringmap :a "1" :b "2")))

true

true

Pass

=_1

(test-false (= 2 2 3))

false

false

Pass

==

(test-true (== 0 0))

true

true

Pass

==

(test-true (== "" ""))

true

true

Pass

>

(test-true (> 3 2))

true

true

Pass

>_1

(test-true (> "z" "y" "b"))

true

true

Pass

>=

(test-true (>= 3 2))

true

true

Pass

>=_1

(test-true (>= "z" "b" "b"))

true

true

Pass

and

(test-true (and true true))

true

true

Pass

and

(test-false (and true false))

false

false

Pass

and_1

(test-true (and true true true))

true

true

Pass

and_1

(test-false (and true true false))

false

false

Pass

any<-list

(test "b" (any<-list (list "a" "b" "c") 2))

"b"

"b"

Pass

any<-list

(test "b" (:2 (stringlist "a" "b" "c")))

"b"

"b"

Pass

any<-list-start-reduce

(test 24 (any<-list-start-reduce : int (intlist 3 2 4) 1 (fn : int [total : int num : int] (* total num))))

24

24

Pass

any<-map

(test "v2" (any<-map (stringmap :a "v1" :b "v2" :c "v3") :b))

"v2"

"v2"

Pass

any<-map-start-reduce

(test "xayb" (any<-map-start-reduce (stringmap :a "x" :b "y") "" (fn : string [current : string key : string value : any] (copy current value key))))

"xayb"

"xayb"

Pass

any<-struct

(test "sname" (any<-struct : string (translation :name "sname") :name))

"sname"

"sname"

Pass

any<-struct

(test "sname" (any<-struct : string (translation :name "sname") "name"))

"sname"

"sname"

Pass

any<-struct

(test "sname" (any<-struct : string (translation :name "sname") ":name"))

"sname"

"sname"

Pass

boolean-write<-map-name-value

(test (stringmutablemap :b "y" :a "x") (let : stringmutablemap [smap : stringmutablemap := (stringmutablemap :b "y") iswrite : boolean := (boolean-write<-map-name-value smap :a "x")] smap))

(stringmutablemap :b "y" :a "x")

(stringmutablemap :b "y" :a "x")

Pass

boolean-write<-map-name-value

(test (stringmutablemap :a "x") (let : stringmutablemap [smap : stringmutablemap := (stringmutablemap :b "y" :a "x") iswrite : boolean := (boolean-write<-map-name-value smap :b "")] smap))

(stringmutablemap :a "x")

(stringmutablemap :a "x")

Pass

compare

(test 1 (compare 3 2))

1

1

Pass

compare

(test 1 (compare "z" "a"))

1

1

Pass

constdef<-any

(test (constdef :pkgname "vx/core" :name "false" :type boolean) (constdef<-any false))

(constdef :pkgname "vx/core" :name "false" :type vx/core/boolean)

(constdef :pkgname "vx/core" :name "false" :type vx/core/boolean)

Pass

constname<-any

(test "vx/core/false" (constname<-any false))

"vx/core/false"

"vx/core/false"

Pass

contains

(test-true (contains "abcde" "cd"))

true

true

Pass

contains

(test-false (contains "abcde" "dc"))

false

false

Pass

contains_1

(test-true (contains (stringlist "1" "2" "3") "2"))

true

true

Pass

contains_1

(test-true (contains (intlist 1 2 3) 2))

true

true

Pass

contains_1

(test-false (contains (list 1 "2" 3) 2))

false

false

Pass

copy

(test (stringmap :a "1" :b "2") (copy (stringmap :a "1") :b "2"))

(stringmap :a "1" :b "2")

(stringmap :a "1" :b "2")

Pass

empty

(test false (empty boolean))

false

false

Pass

empty

(test "" (empty string))

""

""

Pass

empty

(test (list) (empty list))

(list)

(list)

Pass

empty

(test (map) (empty map))

(map)

(map)

Pass

first<-list

(test "b" (first<-list (stringlist "b" "c")))

"b"

"b"

Pass

first<-list-any<-any

(test "b" (first<-list-any<-any : string (list nothing "b" "c") resolve))

"b"

"b"

Pass

float<-string

(test (float 2.3) (float<-string "2.3"))

2.3

2.3

Pass

if

(test "a" (if (= 2 2) "a"))

"a"

"a"

Pass

if

(test "" (if : string (= 1 2) "a"))

""

""

Pass

if_1

(test "a" (if (= 2 2) "a" "b"))

"a"

"a"

Pass

if_1

(test "b" (if (= 1 2) "a" "b"))

"b"

"b"

Pass

if_2

(test-true (if (then (= 2 3) false) (then (!= 3 3) false) (else (! false))))

true

true

Pass

int<-string

(test 4 (int<-string "4"))

4

4

Pass

int<-string

(test 5 (int<-string "5.4"))

5

5

Pass

int<-string

(test 5 (int<-string "5.9"))

5

5

Pass

int<-string

(test notanumber (int<-string "notanumber"))

notanumber

notanumber

Pass

int<-string

(test infinity (int<-string "infinity"))

infinity

infinity

Pass

int<-string

(test neginfinity (int<-string "neginfinity"))

neginfinity

neginfinity

Pass

is-empty_1

(test-true (is-empty false))

true

true

Pass

is-empty_1

(test-true (is-empty ""))

true

true

Pass

is-empty_1

(test-true (is-empty (list)))

true

true

Pass

is-empty_1

(test-true (is-empty (map)))

true

true

Pass

is-error

(test-true (is-error (stringlist (msg :code "My Err"))))

true

true

Pass

is-int

(test-true (is-int 2))

true

true

Pass

is-int

(test-true (is-int "2"))

true

true

Pass

is-int

(test-true (is-int infinity))

true

true

Pass

is-int

(test-true (is-int "infinity"))

true

true

Pass

is-number

(test-true (is-number 5))

true

true

Pass

is-number

(test-true (is-number 5.5))

true

true

Pass

is-number

(test-false (is-number "a"))

false

false

Pass

last<-list

(test "c" (last<-list (stringlist "b" "c")))

"c"

"c"

Pass

length

(test 4 (length "abcd"))

4

4

Pass

length

(test 0 (length ""))

0

0

Pass

length_1

(test 3 (length (stringlist "a" "b" "c")))

3

3

Pass

let

(test 7 (let [v1 : int := 2 v2 : int := (+ v1 3)] (+ v1 v2)))

7

7

Pass

list<-list

(test (stringlist "10" "20") (list<-list : stringlist (anylist "10" "20")))

(stringlist "10" "20")

(stringlist "10" "20")

Pass

list<-list-intany

(test (stringlist "a1" "b2") (list<-list-intany : stringlist (stringlist "a" "b") (fn : stringlist [index : int value : string] (string value index))))

(stringlist "a1" "b2")

(stringlist "a1" "b2")

Pass

list<-map

(test (stringlist "a1" "b2") (list<-map : stringlist (stringmap :x "a1" :y "b2")))

(stringlist "a1" "b2")

(stringlist "a1" "b2")

Pass

list<-map_1

(test (stringlist "a1" "b2") (list<-map : stringlist (stringmap "a" "1" "b" "2") (fn : string [key : string value : string] (string key value))))

(stringlist "a1" "b2")

(stringlist "a1" "b2")

Pass

map<-list

(test (stringmap "keya" "a" "keyb" "b") (map<-list : stringmap (stringlist "a" "b") (fn : string [value : string] (string "key" value))))

(stringmap :keya "a" :keyb "b")

(stringmap :keya "a" :keyb "b")

Pass

map<-map

(test (stringmap :a "1") (map<-map : stringmap (anymap :a "1")))

(stringmap :a "1")

(stringmap :a "1")

Pass

map<-map_1

(test (stringmap :a "a1" :b "b2") (map<-map : stringmap (stringmap :a "1" :b "2") (fn : string [key : string value : string] (string key value))))

(stringmap :a "a1" :b "b2")

(stringmap :a "a1" :b "b2")

Pass

new

(test true (new : boolean true))

true

true

Pass

new

(test 4 (new : int 4))

4

4

Pass

new

(test 5.4 (new : float 5.4))

5.4

5.4

Pass

new

(test "a" (new : string "a"))

"a"

"a"

Pass

new

(test (stringlist "a" "b" "c") (new : stringlist "a" "b" "c"))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

new

(test (stringmap :a "1" :b "2") (new : stringmap :a "1" :b "2"))

(stringmap :a "1" :b "2")

(stringmap :a "1" :b "2")

Pass

new<-type

(test true (new<-type boolean true))

true

true

Pass

new<-type

(test 4 (new<-type int 4))

4

4

Pass

new<-type

(test 5.4 (new<-type float 5.4))

5.4

5.4

Pass

new<-type

(test "a" (new<-type string "a"))

"a"

"a"

Pass

new<-type

(test (stringlist "a" "b" "c") (new<-type stringlist "a" "b" "c"))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

new<-type

(test (stringmap :a "1" :b "2") (new<-type stringmap :a "1" :b "2"))

(stringmap :a "1" :b "2")

(stringmap :a "1" :b "2")

Pass

or

(test-true (or true true))

true

true

Pass

or

(test-true (or true false))

true

true

Pass

or

(test-false (or false false))

false

false

Pass

or_1

(test-true (or false true false))

true

true

Pass

or_1

(test-false (or false false false))

false

false

Pass

resolve

(test "a" (resolve "a"))

"a"

"a"

Pass

resolve_1

(test 4 (resolve (fn : int [] (+ 1 3))))

4

4

Pass

resolve-async

(test 4 (resolve : int (fn : int [] (+ 1 3))))

4

4

Pass

string-repeat

(test "abab" (string-repeat "ab" 2))

"abab"

"abab"

Pass

string<-any

(test "true" (string<-any true))

"true"

"true"

Pass

string<-any

(test "4" (string<-any 4))

"4"

"4"

Pass

string<-any

(test "5.4" (string<-any 5.4))

"5.4"

"5.4"

Pass

string<-any

(test "\"a\"" (string<-any "a"))

`"a"`

`"a"`

Pass

string<-any

(test "(stringlist \"a\" \"b\" \"c\")" (string<-any (stringlist "a" "b" "c")))

`(stringlist "a" "b" "c")`

`(stringlist "a" "b" "c")`

Pass

string<-any

(test "(stringmap :a \"1\" :b \"2\")" (string<-any (stringmap :a "1" :b "2")))

`(stringmap :a "1" :b "2")`

`(stringmap :a "1" :b "2")`

Pass

string<-string-find-replace

(test "a!b!c" (string<-string-find-replace "axybxyc" "xy" "!"))

"a!b!c"

"a!b!c"

Pass

stringlist<-map

(test (stringlist "b" "a") (stringlist<-map (intmap :b 1 :a 2)))

(stringlist "b" "a")

(stringlist "b" "a")

Pass

switch

(test 1 (switch : int "d" (case (list "b" "c" "d") 1) (else 2)))

1

1

Pass

type<-any

(test boolean (type<-any false))

vx/core/boolean

vx/core/boolean

Pass

type<-any

(test int (type<-any 5))

vx/core/int

vx/core/int

Pass

type<-any

(test string (type<-any "a"))

vx/core/string

vx/core/string

Pass

typename<-any

(test "vx/core/boolean" (typename<-any false))

"vx/core/boolean"

"vx/core/boolean"

Pass

typename<-any

(test "vx/core/int" (typename<-any 5))

"vx/core/int"

"vx/core/int"

Pass

typename<-any

(test "vx/core/string" (typename<-any "a"))

"vx/core/string"

"vx/core/string"

Pass

vx/data/table

0% 0/12

0% 0/12

100% 0/0

100% 0/0

0% 0/12

100% 0/0

100% 0/0

Pass?

Name

Test

Expected

Actual

Pass

vx/data/tree

0% 0/9

0% 0/6

0% 0/3

100% 0/0

0% 0/9

100% 0/0

100% 0/0

Pass?

Name

Test

Expected

Actual

Pass

vx/event

0% 0/11

0% 0/3

0% 0/4

0% 0/4

90% 10/11

0% 0/4

0% 0/4

Pass?

Name

Test

Expected

Actual

Pass

vx/sample

50% 2/4

0% 0/1

100% 1/1

50% 1/2

50% 2/4

0% 0/2

0% 0/2

Pass?

Name

Test

Expected

Actual

Pass

myconst

(test myconst myconst)

4

4

Pass

myfunc

(test 5 (myfunc 1))

5

5

Pass

vx/state

0% 0/14

0% 0/1

100% 0/0

0% 0/13

85% 12/14

0% 0/13

0% 0/13

Pass?

Name

Test

Expected

Actual

Pass

vx/type

69% 18/26

100% 0/0

100% 0/0

69% 18/26

80% 21/26

0% 0/26

0% 0/26

Pass?

Name

Test

Expected

Actual

Pass

boolean<-string-ends

(test-true (boolean<-string-ends "abcd" "cd"))

true

true

Pass

boolean<-string-starts

(test-true (boolean<-string-starts "abcd" "ab"))

true

true

Pass

int<-string-find

(test 3 (int<-string-find "abcdcdg" "cd"))

3

3

Pass

int<-string-findkeyword

(test 3 (int<-string-findkeyword "ab cdefg" ":whitespace"))

3

3

Pass

int<-string-findkeyword

(test 5 (int<-string-findkeyword " ab" ":nonwhitespace"))

5

5

Pass

int<-string-findlast

(test 5 (int<-string-findlast "abcdcdg" "cd"))

5

5

Pass

is-string

(test-true (is-string ""))

true

true

Pass

is-string

(test-true (is-string "a"))

true

true

Pass

is-string

(test-false (is-string 5))

false

false

Pass

is-string

(test-false (is-string (list)))

false

false

Pass

is-type

(test-true (is-type false boolean))

true

true

Pass

is-type

(test-true (is-type "a" string))

true

true

Pass

is-type

(test-true (is-type 5.5 number))

true

true

Pass

is-type

(test-true (is-type 4 int))

true

true

Pass

is-type<-any-typelist

(test-true (is-type<-any-typelist false (typelist int boolean)))

true

true

Pass

is-type<-any-typelist

(test-true (is-type<-any-typelist "a" (typelist number string)))

true

true

Pass

is-type<-any-typelist

(test-true (is-type<-any-typelist 5.5 (typelist string number)))

true

true

Pass

is-type<-any-typelist

(test-true (is-type<-any-typelist 4 (typelist string int)))

true

true

Pass

string-lowercase

(test "abc" (string-lowercase "AbC"))

"abc"

"abc"

Pass

string-outdent

(test "ab" (string-outdent "ab"))

"ab"

"ab"

Pass

string-outdent

(test "a b" (string-outdent " a b"))

"a b"

"a b"

Pass

string-trim

(test "ab" (string-trim " ab "))

"ab"

"ab"

Pass

string-uppercase

(test "ABC" (string-uppercase "aBc"))

"ABC"

"ABC"

Pass

string<-int

(test "4" (string<-int 4))

"4"

"4"

Pass

string<-int

(test "51" (string<-int 51))

"51"

"51"

Pass

string<-int

(test "notanumber" (string<-int notanumber))

"notanumber"

"notanumber"

Pass

string<-int

(test "infinity" (string<-int infinity))

"infinity"

"infinity"

Pass

string<-int

(test "neginfinity" (string<-int neginfinity))

"neginfinity"

"neginfinity"

Pass

string<-string-end

(test "abc" (string<-string-end "abcd" 3))

"abc"

"abc"

Pass

string<-string-end

(test "ab" (string<-string-end "abcd" 2))

"ab"

"ab"

Pass

string<-string-start

(test "abcd" (string<-string-start "abcd" 1))

"abcd"

"abcd"

Pass

string<-string-start

(test "bcd" (string<-string-start "abcd" 2))

"bcd"

"bcd"

Pass

string<-string-start-end

(test "abc" (string<-string-start-end "abcd" 1 3))

"abc"

"abc"

Pass

string<-string-start-end

(test "bc" (string<-string-start-end "abcd" 2 3))

"bc"

"bc"

Pass

string<-string-start-end

(test "" (string<-string-start-end "abcd" 5 6))

""

""

Pass

string<-string-start-end

(test "bcd" (string<-string-start-end "abcd" 2 5))

"bcd"

"bcd"

Pass

string<-string-start-end

(test "bc" (string<-string-start-end "abcd" 2 -1))

"bc"

"bc"

Pass

string<-stringlist-join

(test "a$b$c" (string<-stringlist-join (stringlist "a" "b" "c") "$"))

"a$b$c"

"a$b$c"

Pass

stringlist<-string-split

(test (stringlist "a" "b" "c") (stringlist<-string-split "a$b$c" "$"))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

vx/web/html

9% 7/74

0% 0/32

100% 0/0

16% 7/42

98% 73/74

0% 0/42

0% 0/42

Pass?

Name

Test

Expected

Actual

Pass

string<-body-indent

(test "<body></body>" (string<-body-indent (body) 0))

"<body></body>"

"<body></body>"

Pass

string<-body-indent

(test "<body> <div></div> </body>" (string<-body-indent (body (div)) 0))

"<body> <div></div> </body>"

"<body> <div></div> </body>"

Pass

string<-div-indent

(test "<div></div>" (string<-div-indent (div) 0))

"<div></div>"

"<div></div>"

Pass

string<-div-indent

(test "<div id=\"myid\"></div>" (string<-div-indent (div :id "myid") 0))

`<div id="myid"></div>`

`<div id="myid"></div>`

Pass

string<-head-indent

(test "<head></head>" (string<-head-indent (head) 0))

"<head></head>"

"<head></head>"

Pass

string<-html

(test "<!DOCTYPE html> <html> <head></head> <body></body> <footer></footer> </html>" (string<-html (html :head (head) :body (body))))

"<!DOCTYPE html> <html> <head></head> <body></body> <footer></footer> </html>"

"<!DOCTYPE html> <html> <head></head> <body></body> <footer></footer> </html>"

Pass

string<-img-indent

(test "<img src=\"test.svg\" />" (string<-img-indent (img :src "test.svg") 0))

`<img src="test.svg" />`

`<img src="test.svg" />`

Pass

string<-img-indent

(test "<img id=\"myid\" src=\"test.svg\" />" (string<-img-indent (img :id "myid" :src "test.svg") 0))

`<img id="myid" src="test.svg" />`

`<img id="myid" src="test.svg" />`

Pass

string<-meta-indent

(test "<meta charset=\"utf-8\" />" (string<-meta-indent (meta :charset "utf-8") 0))

`<meta charset="utf-8" />`

`<meta charset="utf-8" />`

Pass

string<-p-indent

(test "<p>data</p>" (string<-p-indent (p :text "data") 0))

"<p>data</p>"

"<p>data</p>"

Pass

string<-p-indent

(test "<p id=\"myid\">data</p>" (string<-p-indent (p :id "myid" :text "data") 0))

`<p id="myid">data</p>`

`<p id="myid">data</p>`

Pass

vx/collection

82% 23/28

100% 0/0

100% 0/0

82% 23/28

100% 30/30

0% 0/30

0% 0/30

Pass?

Name

Test

Expected

Actual

Pass

-

(test (stringlist "a" "d") (- : stringlist (stringlist "a" "b" "c" "d") (stringlist "b" "c")))

(stringlist "a" "d")

(stringlist "a" "d")

Pass

-_1

(test (stringmap :a "1" :d "4") (- : stringmap (stringmap :a "1" :b "2" :c "3" :d "4") (stringmap :b "x" :c "y")))

(stringmap :a "1" :d "4")

(stringmap :a "1" :d "4")

Pass

any<-for-until-loop

(test 8 (any<-for-until-loop 1 (fn : boolean [current : int] (> current 6)) (fn : int [current : int] (+ current current))))

8

8

Pass

any<-for-while-loop

(test 8 (any<-for-while-loop 1 (fn : boolean [current : int] (< current 5)) (fn : int [current : int] (+ current current))))

8

8

Pass

anymap<-struct

(test (anymap :name "sname" :wordmap (stringmap :a "x")) (anymap<-struct (translation :name "sname" :wordmap (stringmap :a "x"))))

(anymap :name "sname" :wordmap (stringmap :a "x"))

(anymap :name "sname" :wordmap (stringmap :a "x"))

Pass

int<-map-key

(test 2 (int<-map-key (stringmap :a "x" :b "y") "b"))

2

2

Pass

int<-stringlist-find

(test 2 (int<-stringlist-find (stringlist "a" "b") "b"))

2

2

Pass

is-list

(test-true (is-list (empty stringlist)))

true

true

Pass

is-map

(test-true (is-map (empty stringmap)))

true

true

Pass

list<-for-end-loop

(test (intlist 4 9) (list<-for-end-loop : intlist 2 3 (fn [current : int] (* current current))))

(intlist 4 9)

(intlist 4 9)

Pass

list<-list-end

(test (stringlist "a" "b" "c") (list<-list-end (stringlist "a" "b" "c" "d") 3))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

list<-list-filter

(test (stringlist "a1" "b1" "c1" "d1") (list<-list-filter : stringlist (list "a" 4 "b" (list) "c" (map) "d") (fn : string [value : any] (if (then (is-string value) (string value "1"))))))

(stringlist "a1" "b1" "c1" "d1")

(stringlist "a1" "b1" "c1" "d1")

Pass

list<-list-filtertypes

(test (list "a" 1 "b" "c") (list<-list-filtertypes : list (list "a" 1 "b" "c" 4.5) string int))

(list "a" 1 "b" "c")

(list "a" 1 "b" "c")

Pass

list<-list-flatten

(test (stringlist "a" "b" "c") (list<-list-flatten : stringlist (intlist 1 2) (fn : stringlist [index : int] (switch : stringlist index (case 1 (stringlist "a" "b")) (case 2 (stringlist "c"))))))

(stringlist "a" "b" "c")

(stringlist "a" "b" "c")

Pass

list<-list-join

(test (stringlist "a" "b" "c" "d") (list<-list-join : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d"))))

(stringlist "a" "b" "c" "d")

(stringlist "a" "b" "c" "d")

Pass

list<-list-join_1

(test (stringlist "a" "b" "c" "d") (list<-list-join : stringlist (stringlistlist (stringlist "a" "b") (stringlist "c" "d")) (fn : stringlist [values : stringlist] values)))

(stringlist "a" "b" "c" "d")

(stringlist "a" "b" "c" "d")

Pass

list<-list-start

(test (stringlist "b" "c" "d") (list<-list-start (stringlist "a" "b" "c" "d") 2))

(stringlist "b" "c" "d")

(stringlist "b" "c" "d")

Pass

list<-list-start-end

(test (stringlist "b" "c") (list<-list-start-end (stringlist "a" "b" "c" "d") 2 3))

(stringlist "b" "c")

(stringlist "b" "c")

Pass

map<-map-end

(test (stringmap :b "1" :a "2") (map<-map-end (stringmap :b "1" :a "2" :c "3") 2))

(stringmap :b "1" :a "2")

(stringmap :b "1" :a "2")

Pass

map<-map-keys

(test (stringmap :c "3" :a "1") (map<-map-keys (stringmap :a "1" :b "2" :c "3") (stringlist "c" "a")))

(stringmap :c "3" :a "1")

(stringmap :c "3" :a "1")

Pass

map<-map-start

(test (stringmap :a "2" :c "3") (map<-map-start (stringmap :b "1" :a "2" :c "3") 2))

(stringmap :a "2" :c "3")

(stringmap :a "2" :c "3")

Pass

map<-map-start-end

(test (stringmap :a "2" :c "3") (map<-map-start-end (stringmap :b "1" :a "2" :c "3" :d "4") 2 3))

(stringmap :a "2" :c "3")

(stringmap :a "2" :c "3")

Pass

map<-struct

(test (stringmap :name "sname") (map<-struct : stringmap (translation :name "sname" :wordmap (stringmap :a "x"))))

(stringmap :name "sname")

(stringmap :name "sname")

Pass

vx/data/textblock

34% 18/52

25% 1/4

0% 0/22

65% 17/26

100% 52/52

3% 1/26

3% 1/26

Pass?

Name

Test

Expected

Actual

Pass

delimlist

(test (new : delimlist delimcomma delimwhitespace) (delimlist delimcomma delimwhitespace))

(delimlist vx/data/textblock/delimcomma vx/data/textblock/delimwhitespace)

(delimlist vx/data/textblock/delimcomma vx/data/textblock/delimwhitespace)

Pass

delim-first<-delim-delim

(test (copy delimcomma :pos 1) (delim-first<-delim-delim (copy delimspace :pos 2) (copy delimcomma :pos 1)))

(delim :name "delimcomma" :starttext "," :pos 1)

(delim :name "delimcomma" :starttext "," :pos 1)

Pass

delim-first<-delim-delim

(test (empty delim) (delim-first<-delim-delim (delim :pos 0) (empty delim)))

(delim)

(delim)

Pass

delim-first<-string-delimlist

(test (copy delimcomma :pos 2) (delim-first<-string-delimlist "a, b" (delimlist delimspace delimcomma)))

(delim :name "delimcomma" :starttext "," :pos 2)

(delim :name "delimcomma" :starttext "," :pos 2)

Pass

delim-pos<-string-delim

(test (copy delimcomma :pos 2) (delim-pos<-string-delim "a,b" delimcomma))

(delim :name "delimcomma" :starttext "," :pos 2)

(delim :name "delimcomma" :starttext "," :pos 2)

Pass

delimlist-pos<-string-delimlist

(test (delimlist (copy delimspace :pos 3) (copy delimcomma :pos 2)) (delimlist-pos<-string-delimlist "a, b" (delimlist delimspace delimcomma)))

(delimlist (delim :name "delimspace" :starttext " " :endtext " " :pos 3) (delim :name "delimcomma" :starttext "," :pos 2))

(delimlist (delim :name "delimspace" :starttext " " :endtext " " :pos 3) (delim :name "delimcomma" :starttext "," :pos 2))

Pass

stringlist<-textblocklist

(test (stringlist "a" "b") (stringlist<-textblocklist (textblocklist (textblock :text "a") (textblock :text "b"))))

(stringlist "a" "b")

(stringlist "a" "b")

Pass

text<-textblock

(test "a" (text<-textblock (textblock :text "a")))

"a"

"a"

Pass

textblock-delimnotfound

(test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity msg-error)))) (textblock-delimnotfound (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2)))))

(textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))))

(textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))))

Pass

textblock-delimnotfound

(test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-delimnotfound (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))))

(textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))

(textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))

Pass

textblock-delimnotfound

(test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-delimnotfound (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))))

(textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))

(textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))

Pass

textblock-delimnotfound

(test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-delimnotfound (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))

(textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))))

(textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))))

Pass

textblock-delimnotfound

(test (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))) (textblock-delimnotfound (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "\"b\" 1,\"2\"" :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text "\"a\",\"b\" 1,\"2\"" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "\"a\"" :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext "\"" :endtext "\"") :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)))))))))

(textblock :text `"b" 1,"2"` :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (textblocklist (textblock :text `"a"` :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")))))

(textblock :text `"b" 1,"2"` :startpos 5 :endpos 13 :delim (delim :delimlist (delimlist vx/data/textblock/delimline vx/data/textblock/delimquote vx/data/textblock/delimcomma)) :parent (textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (textblocklist (textblock :text `"a"` :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")))))

Pass

textblock-init

(test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-init (textblock :text "<{a,b},{c d}>" :delim delimtest1)))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim vx/data/textblock/delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim vx/data/textblock/delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))

Pass

textblock-parse

(test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse (textblock :text "<{a,b},{c d}>" :delim delimtest1)))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

Pass

textblock-parse-one

(test (textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity msg-error)))) (textblock-parse-one (textblock :text "a" :startpos 2 :endpos 2 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<a" :startpos 1 :endpos 2 :delim (copy delimbracketangle :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<a" :startpos 1 :endpos 2)))))

(textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))))

(textblock :text "<a" :startpos 1 :endpos 2 :children (textblocklist (textblock :text "<a" :startpos 1 :endpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2)) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2)))) (msgblock :msgs (msglist (msg :code "closedelimmissing" :detail (delim :name "delimclose" :starttext ">") :severity 2))))

Pass

textblock-parse-one

(test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :delim delimtest1)))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim vx/data/textblock/delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim vx/data/textblock/delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))

Pass

textblock-parse-one

(test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

(textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))

(textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))

Pass

textblock-parse-one

(test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock-parse-one (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))

(textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

(textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

Pass

textblock-parse-one

(test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock-parse-one (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

(textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

(textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

Pass

textblock-parse-one

(test (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3))))) (textblock-parse-one (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))))

(textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))

(textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))

Pass

textblock-parse-one

(test (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3)))))))

(textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")))))

(textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")))))

Pass

textblock-parse-one

(test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))

(textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))))

(textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))))

Pass

textblock-parse-one

(test (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))) (textblock-parse-one (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0))))))))

(textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))

(textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))

Pass

textblock-parse-one

(test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock-parse-one (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))

(textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))))

(textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))))

Pass

textblock-parse-one

(test (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))) (textblock-parse-one (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))))

(textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5)))))))

(textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5)))))))

Pass

textblock-parse-one

(test (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))) (textblock-parse-one (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))))

(textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))))

(textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))))

Pass

textblock-parse-one

(test (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))) (textblock-parse-one (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))

(textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))

(textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))

Pass

textblock-parse-one

(test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock-parse-one (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))

(textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))))

(textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))))

Pass

textblock-parse-one

(test (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9))))) (textblock-parse-one (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))))

(textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9)))))

(textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9)))))

Pass

textblock-parse-one

(test (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))) (textblock-parse-one (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9)))))))

(textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")))))

(textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")))))

Pass

textblock-parse-one

(test (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))) (textblock-parse-one (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)))))))

(textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace"))))))

(textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace"))))))

Pass

textblock-parse-one

(test (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))) (textblock-parse-one (textblock :text "d" :startpos 11 :endpos 11 :parent (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0))))))))

(textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))

(textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))

Pass

textblock-parse-one

(test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))

(textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

(textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

Pass

textblock-parse-one

(test (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))) (textblock-parse-one (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))

(textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))))

(textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11))))))))

Pass

textblock-parse-one

(test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

Pass

textblock-parse-one

(test (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock-parse-one (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11)))))))))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

(textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :children (textblocklist (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

Pass

textblock-startleft<-string-delim-offset

(test (textblock :text "a" :startpos 1 :endpos 1) (textblock-startleft<-string-delim-offset "a,b" (delim :pos 2) 0))

(textblock :text "a" :startpos 1 :endpos 1)

(textblock :text "a" :startpos 1 :endpos 1)

Pass

textblock-startright<-string-delim-offset

(test (textblock :text ",b" :startpos 2 :delim (copy delimcomma :pos 2)) (textblock-startright<-string-delim-offset "a,b" (copy delimcomma :pos 2) 0))

(textblock :text ",b" :startpos 2 :delim (delim :name "delimcomma" :starttext "," :pos 2))

(textblock :text ",b" :startpos 2 :delim (delim :name "delimcomma" :starttext "," :pos 2))

Pass

textblock-startright<-string-delim-offset

(test (textblock :text "<b>c" :startpos 2 :delim (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) :close (copy delimclose :starttext ">")) (textblock-startright<-string-delim-offset "a<b>c" (copy delimbracketangle :pos 2 :delimlist (delimlist delimbracketcurly)) 0))

(textblock :text "<b>c" :startpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :pos 2 :delimlist (delimlist vx/data/textblock/delimbracketcurly)) :close (delim :name "delimclose" :starttext ">"))

(textblock :text "<b>c" :startpos 2 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :pos 2 :delimlist (delimlist vx/data/textblock/delimbracketcurly)) :close (delim :name "delimclose" :starttext ">"))

Pass

textblock<-close-textblock

(test (textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))) (textblock<-close-textblock (copy delimclose :starttext "}" :pos 2) (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)))))))

(textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))))

(textblock :text "b" :startpos 5 :endpos 5 :parent (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ","))))))

Pass

textblock<-close-textblock

(test (textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :close delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))) (textblock<-close-textblock (copy delimclose :starttext ">" :pos 1) (textblock :text ">" :startpos 13 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0)) (textblock :text "d" :startpos 11 :endpos 11))))))))

(textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

(textblock :startpos 13 :endpos 13 :parent (textblock :startpos 14 :endpos 14 :delim (delim :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :close vx/data/textblock/delimclosing :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "{c d}" :startpos 8 :endpos 12 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "c" :startpos 9 :endpos 9) (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "d" :startpos 11 :endpos 11)))))))

Pass

textblock<-open-textblock

(test (textblock :text "c}" :startpos 4 :endpos 5 :close (copy delimclose :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (copy delimbracketcurly :pos 0) :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2))))) (textblock<-open-textblock (copy delimbracketcurly :pos 3) (textblock :text "ab{c}" :startpos 1 :endpos 5 :delim delimbracketcurly :parent (textblock :text "ab{c}" :startpos 1 :endpos 5))))

(textblock :text "c}" :startpos 4 :endpos 5 :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2)))))

(textblock :text "c}" :startpos 4 :endpos 5 :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c}" :startpos 3 :endpos 5 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :parent (textblock :text "ab{c}" :startpos 1 :endpos 5 :children (textblocklist (textblock :text "ab" :startpos 1 :endpos 2)))))

Pass

textblock<-open-textblock

(test (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))) (textblock<-open-textblock (copy delimtest2 :pos 1) (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim delimtest1 :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

(textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))

(textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))

Pass

textblock<-open-textblock

(test (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))) (textblock<-open-textblock (copy delimtest3 :pos 1) (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))

(textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

(textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))

Pass

textblock<-single-textblock

(test (textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0) :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13)))))) (textblock<-single-textblock (copy delimcomma :pos 2) (textblock :text "a,b},{c d}>" :startpos 3 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (copy delimbracketcurly :pos 0) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

(textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

(textblock :text "a" :startpos 3 :endpos 3 :parent (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "b},{c d}>" :startpos 5 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{a,b},{c d}>" :startpos 2 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13))))))

Pass

textblock<-single-textblock

(test (textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0) :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5)))))))) (textblock<-single-textblock (copy delimcomma :pos 1) (textblock :text ",{c d}>" :startpos 7 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :pos 0) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))))))))

(textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))))

(textblock :startpos 7 :endpos 7 :parent (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ",") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))))))))

Pass

textblock<-single-textblock

(test (textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (copy delimwhitespace :pos 0) :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0)))))))) (textblock<-single-textblock (copy delimwhitespace :pos 2) (textblock :text "c d}>" :startpos 9 :endpos 13 :delim (delim :delimlist delimlisttest3) :close (copy delimclose :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (copy delimbracketcurly :delimlist delimlisttest2) :close (copy delimclose :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (copy delimbracketangle :delimlist delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (copy delimbracketcurly :pos 0) :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (copy delimcomma :pos 0)) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (copy delimcomma :pos 0))))))))

(textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))))

(textblock :text "c" :startpos 9 :endpos 9 :parent (textblock :text " " :startpos 10 :endpos 10 :delim (delim :name "delimwhitespace" :starttext ":whitespace") :parent (textblock :text "d}>" :startpos 11 :endpos 13 :delim (delim :delimlist vx/data/textblock/delimlisttest3) :close (delim :name "delimclose" :starttext "}") :parent (textblock :text "{c d}>" :startpos 8 :endpos 13 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}" :delimlist vx/data/textblock/delimlisttest2) :close (delim :name "delimclose" :starttext ">") :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">" :delimlist vx/data/textblock/delimlisttest1) :parent (textblock :text "<{a,b},{c d}>" :startpos 1 :endpos 13) :children (textblocklist (textblock :text "{a,b}" :startpos 2 :endpos 6 :delim (delim :name "delimbracketcurly" :starttext "{" :endtext "}") :children (textblocklist (textblock :text "a" :startpos 3 :endpos 3) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text "b" :startpos 5 :endpos 5))) (textblock :text "," :startpos 7 :endpos 7 :delim (delim :name "delimcomma" :starttext ","))))))))

Pass

textblock<-string-delim

(test (textblock :text "a" :startpos 0 :endpos 1 :delim delimcomma) (textblock<-string-delim "a" delimcomma))

(textblock :text "a" :endpos 1 :delim vx/data/textblock/delimcomma)

(textblock :text "a" :endpos 1 :delim vx/data/textblock/delimcomma)

Pass

textblocklist<-textblocklist-remove

(test (textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3")) (textblocklist<-textblocklist-remove (textblocklist (textblock :text "+") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "2") (textblock :text " " :delim (copy delimwhitespace :pos 0)) (textblock :text "3")) delimwhitespace))

(textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3"))

(textblocklist (textblock :text "+") (textblock :text "2") (textblock :text "3"))

Pass

vx/repl

46% 13/28

0% 0/4

0% 0/3

61% 13/21

100% 28/28

0% 0/21

0% 0/21

Pass?

Name

Test

Expected

Actual

Pass

any<-macro

(test 5 (any<-macro : int "(+ " (- 7 5) " 3)"))

5

5

Pass

any<-repl

(test "HelloWorld" (any<-repl (repl :type string :repllist (repllist (repl :value "Hello") (repl :value "World") ))))

"HelloWorld"

"HelloWorld"

Pass

any<-repl

(test 5 (any<-repl (repl :type + :repllist (repllist (repl :value 2) (repl :value 3)))))

5

5

Pass

any<-script

(test 5 (any<-script "(+ 2 3)"))

5

5

Pass

const<-string

(test infinity (const<-string "infinity"))

infinity

infinity

Pass

const<-string

(test tb/delimcomma (const<-string "vx/data/textblock/delimcomma"))

vx/data/textblock/delimcomma

vx/data/textblock/delimcomma

Pass

repl-empty<-textblock-argmap

(test (repl :value 2) (repl-empty<-textblock-argmap (tb/textblock :text "2") (empty argmap)))

(repl :value 2)

(repl :value 2)

Pass

repl-empty<-textblock-argmap

(test (repl :type +) (repl-empty<-textblock-argmap (tb/textblock :text "+") (empty argmap)))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl-empty<-textblock-argmap

(test (repl :value 2) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2"))) (empty argmap)))

(repl :value 2)

(repl :value 2)

Pass

repl-empty<-textblock-argmap

(test (repl (msg<-error "Empty delim cannot have more than one child.")) (repl-empty<-textblock-argmap (tb/textblock :text "1" :children (tb/textblocklist (tb/textblock :text "2") (tb/textblock :text "3"))) (empty argmap)))

(repl (msgblock :msgs (msglist (msg :severity 2 :text "Empty delim cannot have more than one child."))))

(repl (msgblock :msgs (msglist (msg :severity 2 :text "Empty delim cannot have more than one child."))))

Pass

repl-paren<-textblock-argmap

(test (repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3))) (repl-paren<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-macro

(test (repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-macro "(+ " (- 7 5) " 3)"))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-script

(test (repl :value 2) (repl<-script "2"))

(repl :value 2)

(repl :value 2)

Pass

repl<-script

(test (repl :value infinity) (repl<-script "infinity"))

(repl :value infinity)

(repl :value infinity)

Pass

repl<-script

(test (repl :type +) (repl<-script "+"))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl<-script

(test (repl :type + :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-script "(+ 2 3)"))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-string-argmap

(test (repl :value "Hello") (repl<-string-argmap `"Hello"` (empty argmap)))

(repl :value "Hello")

(repl :value "Hello")

Pass

repl<-string-argmap

(test (repl :value 2) (repl<-string-argmap "2" (empty argmap)))

(repl :value 2)

(repl :value 2)

Pass

repl<-string-argmap

(test (repl :value 2.3) (repl<-string-argmap "2.3" (empty argmap)))

(repl :value 2.3)

(repl :value 2.3)

Pass

repl<-string-argmap

(test (repl :value infinity) (repl<-string-argmap "infinity" (empty argmap)))

(repl :value infinity)

(repl :value infinity)

Pass

repl<-string-argmap

(test (repl :value tb/delimcomma) (repl<-string-argmap "vx/data/textblock/delimcomma" (empty argmap)))

(repl :value vx/data/textblock/delimcomma)

(repl :value vx/data/textblock/delimcomma)

Pass

repl<-string-argmap

(test (repl :type string) (repl<-string-argmap "string" (empty argmap)))

(repl :type vx/core/string)

(repl :type vx/core/string)

Pass

repl<-string-argmap

(test (repl :type +) (repl<-string-argmap "+" (empty argmap)))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl<-textblock

(test (repl :value 2) (repl<-textblock (tb/textblock :text "2")))

(repl :value 2)

(repl :value 2)

Pass

repl<-textblock

(test (repl :type +) (repl<-textblock (tb/textblock :text "+")))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl<-textblock

(test (repl :type +) (repl<-textblock (tb/textblock :text "+")))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl<-textblock

(test (repl :type + :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3")))))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-textblock

(test (repl :type + :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-textblock (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3")))))))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-textblock-argmap

(test (repl :value 2) (repl<-textblock-argmap (tb/textblock :text "2") (empty argmap)))

(repl :value 2)

(repl :value 2)

Pass

repl<-textblock-argmap

(test (repl :type +) (repl<-textblock-argmap (tb/textblock :text "+") (empty argmap)))

(repl :type vx/core/+)

(repl :type vx/core/+)

Pass

repl<-textblock-argmap

(test (repl :type + :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))) (empty argmap)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

repl<-textblock-argmap

(test (repl :type + :repllist (repllist (repl :value 2) (repl :value 3))) (repl<-textblock-argmap (tb/textblock :text "(+ 2 3)" :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3"))))) (empty argmap)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

(repl :type vx/core/+ :repllist (repllist (repl :value 2) (repl :value 3)))

Pass

textblock<-script

(test (tb/textblock :text "infinity" :startpos 1 :endpos 8 :children (tb/textblocklist (tb/textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp")))) (textblock<-script "infinity"))

(textblock :text "infinity" :startpos 1 :endpos 8 :children (textblocklist (textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp"))))

(textblock :text "infinity" :startpos 1 :endpos 8 :children (textblocklist (textblock :text "infinity" :startpos 1 :endpos 8 :delim (delim :name "delimvxlisp"))))

Pass

textblock<-script

(test (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (tb/textblocklist (tb/textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (copy delimvxlispparen :delimlist (empty delimlist)) :children (tb/textblocklist (tb/textblock :text "+" :startpos 2 :endpos 2) (tb/textblock :text " " :startpos 3 :endpos 3 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "2" :startpos 4 :endpos 4) (tb/textblock :text " " :startpos 5 :endpos 5 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "3" :startpos 6 :endpos 6))))) (textblock<-script "(+ 2 3)"))

(textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (textblocklist (textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (delim :name "delimvxlispparen" :starttext "(" :endtext ")") :children (textblocklist (textblock :text "+" :startpos 2 :endpos 2) (textblock :text " " :startpos 3 :endpos 3 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "2" :startpos 4 :endpos 4) (textblock :text " " :startpos 5 :endpos 5 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "3" :startpos 6 :endpos 6)))))

(textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :children (textblocklist (textblock :text "(+ 2 3)" :startpos 1 :endpos 7 :delim (delim :name "delimvxlispparen" :starttext "(" :endtext ")") :children (textblocklist (textblock :text "+" :startpos 2 :endpos 2) (textblock :text " " :startpos 3 :endpos 3 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "2" :startpos 4 :endpos 4) (textblock :text " " :startpos 5 :endpos 5 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "3" :startpos 6 :endpos 6)))))

Pass

typefunc<-string

(test string (typefunc<-string "string"))

vx/core/string

vx/core/string

Pass

typefunc<-string

(test + (typefunc<-string "+"))

vx/core/+

vx/core/+

Pass

vx/data/file

35% 5/14

0% 0/3

100% 0/0

45% 5/11

92% 13/14

0% 0/11

0% 0/11

Pass?

Name

Test

Expected

Actual

Pass

boolean-exists<-file

(test-true (boolean-exists<-file (file :name "boolean_exists_from_file.txt" :path (string path-test-resources "/vx"))))

true

true

Pass

boolean-write<-file-string

(test-true (boolean-write<-file-string (file :name "boolean_write_from_file_string.txt" :path (string path-test-resources "/vx")) "writetext"))

true

true

Pass

file-read<-file

(test (file :name "string_read_from_file.txt" :path (string path-test-resources "/vx") :text "testdata") (file-read<-file (file :name "string_read_from_file.txt" :path (string path-test-resources "/vx"))))

(file :name "string_read_from_file.txt" :path "src/test/resources/vx" :text "testdata")

(file :name "string_read_from_file.txt" :path "src/test/resources/vx" :text "testdata")

Pass

pathfull<-file

(test "fname" (pathfull<-file (file :name "fname")))

"fname"

"fname"

Pass

pathfull<-file

(test "fpath/fname" (pathfull<-file (file :path "fpath" :name "fname")))

"fpath/fname"

"fpath/fname"

Pass

string-read<-file

(test "testdata" (string-read<-file (file :name "string_read_from_file.txt" :path (string path-test-resources "/vx"))))

"testdata"

"testdata"

Pass

vx/data/xml

47% 10/21

0% 0/3

0% 0/4

71% 10/14

66% 14/21

0% 0/14

0% 0/14

Pass?

Name

Test

Expected

Actual

Pass

string-first<-xml

(test "text" (string-first<-xml (xml :children (xmllist (xml :text "text")))))

"text"

"text"

Pass

textblock-xml<-string

(test (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text " " :startpos 6 :endpos 8) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text " " :startpos 15 :endpos 19) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text " " :startpos 54 :endpos 56) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text " " :startpos 64 :endpos 64) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))) (textblock-xml<-string "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>"))

(textblock :text `<doc> <tag1> <tag2 prop1="val1" prop2="val2" /> </tag1> </doc>` :startpos 1 :endpos 70 :children (textblocklist (textblock :text "<doc>" :startpos 1 :endpos 5 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "doc" :startpos 2 :endpos 4))) (textblock :text " " :startpos 6 :endpos 8) (textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "tag1" :startpos 10 :endpos 13))) (textblock :text " " :startpos 15 :endpos 19) (textblock :text `<tag2 prop1="val1" prop2="val2" />` :startpos 20 :endpos 53 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "tag2" :startpos 21 :endpos 24) (textblock :text " " :startpos 25 :endpos 25 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (delim :name "delimxmlequal" :starttext "=")) (textblock :text `"val1"` :startpos 32 :endpos 37 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "val1" :startpos 33 :endpos 36))) (textblock :text " " :startpos 38 :endpos 38 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (delim :name "delimxmlequal" :starttext "=")) (textblock :text `"val2"` :startpos 45 :endpos 50 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "val2" :startpos 46 :endpos 49))) (textblock :text " " :startpos 51 :endpos 51 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "/" :startpos 52 :endpos 52))) (textblock :text " " :startpos 54 :endpos 56) (textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "/tag1" :startpos 58 :endpos 62))) (textblock :text " " :startpos 64 :endpos 64) (textblock :text "</doc>" :startpos 65 :endpos 70 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "/doc" :startpos 66 :endpos 69)))))

(textblock :text `<doc> <tag1> <tag2 prop1="val1" prop2="val2" /> </tag1> </doc>` :startpos 1 :endpos 70 :children (textblocklist (textblock :text "<doc>" :startpos 1 :endpos 5 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "doc" :startpos 2 :endpos 4))) (textblock :text " " :startpos 6 :endpos 8) (textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "tag1" :startpos 10 :endpos 13))) (textblock :text " " :startpos 15 :endpos 19) (textblock :text `<tag2 prop1="val1" prop2="val2" />` :startpos 20 :endpos 53 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "tag2" :startpos 21 :endpos 24) (textblock :text " " :startpos 25 :endpos 25 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "prop1" :startpos 26 :endpos 30) (textblock :text "=" :startpos 31 :endpos 31 :delim (delim :name "delimxmlequal" :starttext "=")) (textblock :text `"val1"` :startpos 32 :endpos 37 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "val1" :startpos 33 :endpos 36))) (textblock :text " " :startpos 38 :endpos 38 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "prop2" :startpos 39 :endpos 43) (textblock :text "=" :startpos 44 :endpos 44 :delim (delim :name "delimxmlequal" :starttext "=")) (textblock :text `"val2"` :startpos 45 :endpos 50 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "val2" :startpos 46 :endpos 49))) (textblock :text " " :startpos 51 :endpos 51 :delim (delim :name "delimwhitespace" :starttext ":whitespace")) (textblock :text "/" :startpos 52 :endpos 52))) (textblock :text " " :startpos 54 :endpos 56) (textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "/tag1" :startpos 58 :endpos 62))) (textblock :text " " :startpos 64 :endpos 64) (textblock :text "</doc>" :startpos 65 :endpos 70 :delim (delim :name "delimbracketangle" :starttext "<" :endtext ">") :children (textblocklist (textblock :text "/doc" :startpos 66 :endpos 69)))))

Pass

xml-angle<-xml-textblock

(test (xml :tag :notag) (xml-angle<-xml-textblock (empty xml) (empty tb/textblock)))

(xml :tag ":notag")

(xml :tag ":notag")

Pass

xml-angle<-xml-textblock

(test (xml :tag "doc") (xml-angle<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4)))))

(xml :tag "doc")

(xml :tag "doc")

Pass

xml-angle<-xml-textblock

(test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-angle<-xml-textblock (xml :tag "tag1") (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52)))))

(xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))

(xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))

Pass

xml-close<-xml-textblock

(test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/")))

(xml :tag "doc")

(xml :tag "doc")

Pass

xml-close<-xml-textblock

(test (xml :tag "doc") (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "</doc>")))

(xml :tag "doc")

(xml :tag "doc")

Pass

xml-close<-xml-textblock

(test (xml :tag "doc" (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity msg-error)) (xml-close<-xml-textblock (xml :tag "doc") (tb/textblock :text "/wrong")))

(xml :tag "doc" (msgblock :msgs (msglist (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity 2))))

(xml :tag "doc" (msgblock :msgs (msglist (msg :code ":invalidxmlclosetag" :detail (anymap :tag "/wrong" :startpos 0 :endpos 0 :line 0 :column 0) :severity 2))))

Pass

xml-close<-xml-textblock

(test (xml :tag "top" :children (xmllist (xml :tag "doc"))) (xml-close<-xml-textblock (xml :tag "doc" :parent (xml :tag "top")) (tb/textblock :text "/")))

(xml :tag "top" :children (xmllist (xml :tag "doc")))

(xml :tag "top" :children (xmllist (xml :tag "doc")))

Pass

xml-parse<-xml-textblock

(test (xml :tag "doc") (xml-parse<-xml-textblock (empty xml) (tb/textblock :text "<doc>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc")))))

(xml :tag "doc")

(xml :tag "doc")

Pass

xml-parse<-xml-textblock

(test (xml :tag "doc") (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0))))

(xml :tag "doc")

(xml :tag "doc")

Pass

xml-parse<-xml-textblock

(test (xml :tag "tag1" :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "doc") (tb/textblock :text "<tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1")))))

(xml :tag "tag1" :parent (xml :tag "doc"))

(xml :tag "tag1" :parent (xml :tag "doc"))

Pass

xml-parse<-xml-textblock

(test (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (xml-parse<-xml-textblock (xml :tag "tag1" :parent (xml :tag "doc")) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/")))))

(xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc"))

(xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc"))

Pass

xml-parse<-xml-textblock

(test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblock (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))) :parent (xml :tag "doc")) (tb/textblock :text "</tag1>" :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1")))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

Pass

xml-parse<-xml-textblocklist

(test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml-parse<-xml-textblocklist (empty xml) (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text " " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text " " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text " " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text " " :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69))))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

Pass

xml-properties<-xml-textblocklist

(test (xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))) (xml-properties<-xml-textblocklist (xml :tag :notag :parent (xml :tag "doc")) (tb/textblocklist (tb/textblock :text "tag2") (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2") (tb/textblock :text "=" :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2"))) (tb/textblock :text " " :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/"))))

(xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))

(xml :tag "doc" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))

Pass

xml-property<-xml-textblock

(test (xml :tag "tag1") (xml-property<-xml-textblock (xml :tag ":notag") (tb/textblock :text "tag1")))

(xml :tag "tag1")

(xml :tag "tag1")

Pass

xml-property<-xml-textblock

(test (xml :tag "tag1" :prop "prop1") (xml-property<-xml-textblock (xml :tag "tag1") (tb/textblock :text "prop1")))

(xml :tag "tag1" :prop "prop1")

(xml :tag "tag1" :prop "prop1")

Pass

xml-property<-xml-textblock

(test (xml :tag "tag1" :propmap (stringmap :prop1 "val1")) (xml-property<-xml-textblock (xml :tag "tag1" :prop "prop1") (tb/textblock :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1")))))

(xml :tag "tag1" :propmap (stringmap :prop1 "val1"))

(xml :tag "tag1" :propmap (stringmap :prop1 "val1"))

Pass

xml-text<-xml-textblock

(test (xml :text "text1") (xml-text<-xml-textblock (empty xml) (tb/textblock :text "text1")))

(xml :text "text1")

(xml :text "text1")

Pass

xml-text<-xml-textblock

(test (xml :tag "doc" :children (xmllist (xml :text "text1"))) (xml-text<-xml-textblock (xml :tag "doc") (tb/textblock :text "text1")))

(xml :tag "doc" :children (xmllist (xml :text "text1")))

(xml :tag "doc" :children (xmllist (xml :text "text1")))

Pass

xml<-textblock

(test (xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2")))))) (xml<-textblock (tb/textblock :text "<doc> <tag1> <tag2 prop1=\"val1\" prop2=\"val2\" /> </tag1> </doc>" :startpos 1 :endpos 70 :children (tb/textblocklist (tb/textblock :text "<doc>" :startpos 1 :endpos 5 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "doc" :startpos 2 :endpos 4))) (tb/textblock :text " " :startpos 6 :endpos 8 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag1>" :startpos 9 :endpos 14 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag1" :startpos 10 :endpos 13))) (tb/textblock :text " " :startpos 15 :endpos 19 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "<tag2 prop1=\"val1\" prop2=\"val2\" />" :startpos 20 :endpos 53 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "tag2" :startpos 21 :endpos 24) (tb/textblock :text " " :startpos 25 :endpos 25 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop1" :startpos 26 :endpos 30) (tb/textblock :text "=" :startpos 31 :endpos 31 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val1\"" :startpos 32 :endpos 37 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val1" :startpos 33 :endpos 36))) (tb/textblock :text " " :startpos 38 :endpos 38 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "prop2" :startpos 39 :endpos 43) (tb/textblock :text "=" :startpos 44 :endpos 44 :delim (copy delimxmlequal :pos 0)) (tb/textblock :text "\"val2\"" :startpos 45 :endpos 50 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "val2" :startpos 46 :endpos 49))) (tb/textblock :text " " :startpos 51 :endpos 51 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "/" :startpos 52 :endpos 52))) (tb/textblock :text " " :startpos 54 :endpos 56 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</tag1>" :startpos 57 :endpos 63 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/tag1" :startpos 58 :endpos 62))) (tb/textblock :text " " :startpos 64 :endpos 64 :delim (copy tb/delimwhitespace :pos 0)) (tb/textblock :text "</doc>" :startpos 65 :endpos 70 :delim (copy tb/delimbracketangle :pos 0) :children (tb/textblocklist (tb/textblock :text "/doc" :startpos 66 :endpos 69)))))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

(xml :tag "doc" :children (xmllist (xml :tag "tag1" :children (xmllist (xml :tag "tag2" :propmap (stringmap :prop1 "val1" :prop2 "val2"))))))

Pass

vx/test

7% 3/40

0% 0/11

0% 0/1

10% 3/28

93% 43/46

0% 0/34

0% 0/34

Pass?

Name

Test

Expected

Actual

Pass

file-test

(test-true (boolean-exists<-file (file :name "testsuite.vxlisp" :path path-test-resources)))

true

true

Pass

file-testhtml

(test-true (boolean-exists<-file (file :name "testsuite.html" :path path-test-resources)))

true

true

Pass

file-testnode

(test-true (boolean-exists<-file (file :name "testsuitenode.vxlisp" :path path-test-resources)))

true

true

Pass

vx/ui/ui

4% 7/144

0% 0/29

0% 0/47

10% 7/68

65% 95/144

0% 0/68

0% 0/68

Pass?

Name

Test

Expected

Actual

Pass

boolean-writestate<-uiapp

(test (ui :uid "app") (let : ui [iswrite : boolean := (boolean-writestate<-uiapp (ui :uid "app")) appui : ui := (ui-readstate-uiapp) isremoved : boolean := (boolean-removestate-uiapp)] appui))

(ui :uid "app")

(ui :uid "app")

Pass

string-parentuid<-uid

(test "" (string-parentuid<-uid "a"))

""

""

Pass

string-parentuid<-uid

(test "a/b" (string-parentuid<-uid "a/b/c"))

"a/b"

"a/b"

Pass

ui-readstate-uiapp

(test (ui :uid "myapp") (let : ui [iswrite : boolean := (boolean-writestate<-uiapp (ui :uid "myapp"))] (ui-readstate-uiapp)))

(ui :uid "myapp")

(ui :uid "myapp")

Pass

ui-readstate<-uid

(test (ui :uid "a/b/c") (let : ui [uiapp : ui := (ui :uid "a" :uimap (uimap<-uilist (ui :uid "a/b" :uimap (uimap<-uilist (ui :uid "a/b/c"))))) iswrite : boolean := (boolean-writestate<-uiapp uiapp) readval : ui := (ui-readstate<-uid "a/b/c") isremoved : boolean := (boolean-removestate-uiapp)] readval))

(ui :uid "a/b/c")

(ui :uid "a/b/c")

Pass

ui-write<-ui-visible

(test (ui :uimap (uimap :a (ui :uid "a" :hidden true) :b (ui :uid "b"))) (ui-write<-ui-visible (ui :uimap (uimap :a (ui :uid "a") :b (ui :uid "b" :hidden true))) 2))

(ui :uimap (uimap :a (ui :uid "a" :hidden true) :b (ui :uid "b")))

(ui :uimap (uimap :a (ui :uid "a" :hidden true) :b (ui :uid "b")))

Pass

ui<-ui-find

(test (ui :uid "a/b/c") (ui<-ui-find (ui :uid "a" :uimap (uimap :a/b (ui :uid "a/b" :uimap (uimap :a/b/c (ui :uid "a/b/c"))))) "a/b/c"))

(ui :uid "a/b/c")

(ui :uid "a/b/c")

Pass

ui<-ui-selected

(test (ui :uimap (uimap :a (ui :uid "a") :b (ui :uid "b" :selected true))) (ui<-ui-selected (ui :uimap (uimap :a (ui :uid "a" :selected true) :b (ui :uid "b"))) 2))

(ui :uimap (uimap :a (ui :uid "a") :b (ui :uid "b" :selected true)))

(ui :uimap (uimap :a (ui :uid "a") :b (ui :uid "b" :selected true)))

Pass

vx/web/htmldoc

0% 0/15

100% 0/0

100% 0/0

0% 0/15

100% 15/15

0% 0/15

0% 0/15

Pass?

Name

Test

Expected

Actual

Pass

vx/data/csv

9% 1/11

0% 0/3

0% 0/1

14% 1/7

63% 7/11

0% 0/7

0% 0/7

Pass?

Name

Test

Expected

Actual

Pass

textblock-csv<-string

(test (tb/textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (tb/textblocklist (tb/textblock :text `"a"` :startpos 1 :endpos 3 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "a" :startpos 2 :endpos 2))) (tb/textblock :text "," :startpos 4 :endpos 4 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"b"` :startpos 5 :endpos 7 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "b" :startpos 6 :endpos 6))) (tb/textblock :text " " :startpos 8 :endpos 8 :delim (copy tb/delimline :pos 0)) (tb/textblock :text "1" :startpos 9 :endpos 9) (tb/textblock :text "," :startpos 10 :endpos 10 :delim (copy tb/delimcomma :pos 0)) (tb/textblock :text `"2"` :startpos 11 :endpos 13 :delim (copy tb/delimquote :pos 0) :children (tb/textblocklist (tb/textblock :text "2" :startpos 12 :endpos 12))))) (textblock-csv<-string `"a","b" 1,"2"`))

(textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (textblocklist (textblock :text `"a"` :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text `"b"` :startpos 5 :endpos 7 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "b" :startpos 6 :endpos 6))) (textblock :text " " :startpos 8 :endpos 8 :delim (delim :name "delimline" :starttext " ")) (textblock :text "1" :startpos 9 :endpos 9) (textblock :text "," :startpos 10 :endpos 10 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text `"2"` :startpos 11 :endpos 13 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "2" :startpos 12 :endpos 12)))))

(textblock :text `"a","b" 1,"2"` :startpos 1 :endpos 13 :children (textblocklist (textblock :text `"a"` :startpos 1 :endpos 3 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "a" :startpos 2 :endpos 2))) (textblock :text "," :startpos 4 :endpos 4 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text `"b"` :startpos 5 :endpos 7 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "b" :startpos 6 :endpos 6))) (textblock :text " " :startpos 8 :endpos 8 :delim (delim :name "delimline" :starttext " ")) (textblock :text "1" :startpos 9 :endpos 9) (textblock :text "," :startpos 10 :endpos 10 :delim (delim :name "delimcomma" :starttext ",")) (textblock :text `"2"` :startpos 11 :endpos 13 :delim (delim :name "delimquote" :starttext `"` :endtext `"`) :children (textblocklist (textblock :text "2" :startpos 12 :endpos 12)))))

Pass

vx/translate

30% 3/10

100% 0/0

100% 0/0

30% 3/10

100% 11/11

0% 0/11

0% 0/11

Pass?

Name

Test

Expected

Actual

Pass

translate

(test "!NotFound!" (translate "!NotFound!"))

"!NotFound!"

"!NotFound!"

Pass

translate_1

(test "Repl Type Not Found" (translate (msg :path "vx/repl/repl/repl<-string-argmap" :code "repltypenotfound")))

"Repl Type Not Found"

"Repl Type Not Found"

Pass

translate<-translation-string

(test "Hola" (translate<-translation-string (translation :wordmap (stringmap "Hello" "Hola")) "Hello"))

"Hola"

"Hola"

Pass

vx/translation/en

20% 1/5

100% 0/0

100% 0/0

20% 1/5

100% 5/5

0% 0/5

0% 0/5

Pass?

Name

Test

Expected

Actual

Pass

translation-en

(test "Hello" (trn/translate<-translation-string (translation-en) "Hello"))

"Hello"

"Hello"

Pass

vx/translation/es

50% 1/2

100% 0/0

100% 0/0

50% 1/2

100% 2/2

0% 0/2

0% 0/2

Pass?

Name

Test

Expected

Actual

Pass

translation-es

(test "Hola" (trn/translate<-translation-string (translation-es) "Hello"))

"Hola"

"Hola"

Pass

vx/ui/html/uihtml

0% 0/44

100% 0/0

0% 0/7

0% 0/37

66% 30/45

0% 0/38

0% 0/38

Pass?

Name

Test

Expected

Actual

Pass

vx/ui/svg/uisvg

100% 0/0

100% 0/0

100% 0/0

100% 0/0

100% 0/0

100% 0/0

100% 0/0

Pass?

Name

Test

Expected

Actual

Pass

vx/web/http

0% 0/9

0% 0/1

100% 0/0

0% 0/8

88% 8/9

0% 0/8

0% 0/8

Pass?

Name

Test

Expected

Actual

Pass

vx/translation/all

50% 1/2

100% 0/0

100% 0/0

50% 1/2

100% 2/2

0% 0/2

0% 0/2

Pass?

Name

Test

Expected

Actual

Pass

translationmap-all

(test "Hola" (trn/translate<-translationmap-name-string (translationmap-all) "es" "Hello"))

"Hola"

"Hola"