%%%% Starting test RFC8259 Group begin: RFC8259 Group begin: whitespace Test begin: test-name: "no whitespace" Test end: result-kind: pass actual-value: () expected-value: () Test begin: test-name: "some whitespace" Test end: result-kind: pass actual-value: () expected-value: () Group end: whitespace Group begin: atoms Test begin: test-name: "true" Test end: result-kind: pass actual-value: (#t) expected-value: (#t) Test begin: test-name: "false" Test end: result-kind: pass actual-value: (#f) expected-value: (#f) Test begin: test-name: "null" Test end: result-kind: pass actual-value: (null) expected-value: (null) Group end: atoms Group begin: numbers Test begin: test-name: "0" Test end: result-kind: pass actual-value: (0) expected-value: (0) Test begin: test-name: "1" Test end: result-kind: pass actual-value: (1) expected-value: (1) Test begin: test-name: "-1" Test end: result-kind: pass actual-value: (-1) expected-value: (-1) Test begin: test-name: "10" Test end: result-kind: pass actual-value: (10) expected-value: (10) Test begin: test-name: "-10" Test end: result-kind: pass actual-value: (-10) expected-value: (-10) Test begin: test-name: "0.1" Test end: result-kind: pass actual-value: 0.1 expected-value: 0.1 Test begin: test-name: "0.01" Test end: result-kind: pass actual-value: 0.01 expected-value: 0.01 Test begin: test-name: "-0.1" Test end: result-kind: pass actual-value: -0.1 expected-value: -0.1 Test begin: test-name: "-0.01" Test end: result-kind: pass actual-value: -0.01 expected-value: -0.01 Test begin: test-name: "99.91" Test end: result-kind: pass actual-value: 99.91 expected-value: 99.91 Test begin: test-name: "-99.91" Test end: result-kind: pass actual-value: -99.91 expected-value: -99.91 Test begin: test-name: "1e0" Test end: result-kind: pass actual-value: 1.0 expected-value: 1.0 Test begin: test-name: "1e+0" Test end: result-kind: pass actual-value: 1.0 expected-value: 1.0 Test begin: test-name: "1e-0" Test end: result-kind: pass actual-value: 1.0 expected-value: 1.0 Test begin: test-name: "5e10" Test end: result-kind: pass actual-value: 50000000000.0 expected-value: 50000000000.0 Test begin: test-name: "5e+10" Test end: result-kind: pass actual-value: 50000000000.0 expected-value: 50000000000.0 Test begin: test-name: "5e-10" Test end: result-kind: pass actual-value: 5e-10 expected-value: 5e-10 Test begin: test-name: "5e10" Test end: result-kind: pass actual-value: 50000000000.0 expected-value: 50000000000.0 Test begin: test-name: "5E+10" Test end: result-kind: pass actual-value: 50000000000.0 expected-value: 50000000000.0 Test begin: test-name: "5E-10" Test end: result-kind: pass actual-value: 5e-10 expected-value: 5e-10 Test begin: test-name: "-5e10" Test end: result-kind: pass actual-value: -50000000000.0 expected-value: -50000000000.0 Test begin: test-name: "-5e+10" Test end: result-kind: pass actual-value: -50000000000.0 expected-value: -50000000000.0 Test begin: test-name: "-5e-10" Test end: result-kind: pass actual-value: -5e-10 expected-value: -5e-10 Test begin: test-name: "5.5e5" Test end: result-kind: pass actual-value: 550000.0 expected-value: 550000.0 Test begin: test-name: "no-digits-after-frac" Test end: result-kind: pass actual-value: (no-digits-after-frac 0 1 #f () ) expected-value: (no-digits-after-frac 0 1 #f () ) Test begin: test-name: "no-digits-after-e, no sign" Test end: result-kind: pass actual-value: (no-digits-after-e 0 1 #f () ) expected-value: (no-digits-after-e 0 1 #f () ) Test begin: test-name: "no-digits-after-e, +" Test end: result-kind: pass actual-value: (no-digits-after-e 0 1 #f () ) expected-value: (no-digits-after-e 0 1 #f () ) Test begin: test-name: "no-digits-after-e, -" Test end: result-kind: pass actual-value: (no-digits-after-e 0 1 #f () ) expected-value: (no-digits-after-e 0 1 #f () ) Group end: numbers Group begin: strings Test begin: test-name: "one char" Test end: result-kind: pass actual-value: ("a") expected-value: ("a") Test begin: test-name: "two chars" Test end: result-kind: pass actual-value: ("ab") expected-value: ("ab") Test begin: test-name: "one escape" Test end: result-kind: pass actual-value: ("\n") expected-value: ("\n") Test begin: test-name: "multiple escapes" Test end: result-kind: pass actual-value: ("\n\t\r\f\\/") expected-value: ("\n\t\r\f\\/") Test begin: test-name: "Proper unicode escape" Test end: result-kind: pass actual-value: ("\x01") expected-value: ("\x01") Test begin: test-name: "Surrogate pair, uppercase chars" Test end: result-kind: pass actual-value: ("🯅") expected-value: ("🯅") Test begin: test-name: "Surrogate pair, lowercase chars" Test end: result-kind: pass actual-value: ("🯅") expected-value: ("🯅") Test begin: test-name: "Lone surrogate" Test end: result-kind: pass actual-value: (lone-surrogate 55297) expected-value: (lone-surrogate 55297) Test begin: test-name: "Lone low surrogate" Test end: result-kind: pass actual-value: (lone-surrogate 56375) expected-value: (lone-surrogate 56375) Test begin: test-name: "Two high surrogates" Test end: result-kind: pass actual-value: (lone-surrogate 55297) expected-value: (lone-surrogate 55297) Test begin: test-name: "Two low surrogates" Test end: result-kind: pass actual-value: (lone-surrogate 56375) expected-value: (lone-surrogate 56375) Test begin: test-name: "handle lone escape" Test end: result-kind: pass actual-value: ("�A") expected-value: ("�A") Test begin: test-name: "handle multiple lone escapes" Test end: result-kind: pass actual-value: ("��") expected-value: ("��") Test begin: test-name: "truncated escape" Test end: result-kind: pass actual-value: (invalid-unicode-escape) expected-value: (invalid-unicode-escape) Test begin: test-name: "Handling a truncated escape" Test end: result-kind: pass actual-value: ("�G") expected-value: ("�G") Test begin: test-name: "unknown escape" Test end: result-kind: pass actual-value: (unknown-escape) expected-value: (unknown-escape) Test begin: test-name: "expected-end-of-string at EOF" Test end: result-kind: pass actual-value: (expected-end-of-string ()) expected-value: (expected-end-of-string ()) Test begin: test-name: "expected-end-of-string, newline inside" Test end: result-kind: pass actual-value: (expected-end-of-string (#\a)) expected-value: (expected-end-of-string (#\a)) Group end: strings Group begin: objects Test begin: test-name: "empty object" Test end: result-kind: pass actual-value: (()) expected-value: (()) Test begin: test-name: "empty object with whitepsace inside" Test end: result-kind: pass actual-value: (()) expected-value: (()) Test begin: test-name: "object with a single key" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object with a single key and whitespace" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object with two keys" Test end: result-kind: pass actual-value: ((("a" . "a") ("b" . "b"))) expected-value: ((("a" . "a") ("b" . "b"))) Test begin: test-name: "object with two keys, same key" Test end: result-kind: pass actual-value: ((("a" . "a") ("a" . "b"))) expected-value: ((("a" . "a") ("a" . "b"))) Test begin: test-name: "missing key separator" Test end: result-kind: pass actual-value: (expected-key-separator) expected-value: (expected-key-separator) Test begin: test-name: "missing value" Test end: result-kind: pass actual-value: (expected-value "a") expected-value: (expected-value "a") Test begin: test-name: "missing separator between pairs" Test end: result-kind: pass actual-value: (expected-comma-or-end-of-object 1 0 #f (("a" . "a")) ) expected-value: (expected-comma-or-end-of-object 1 0 #f (("a" . "a")) ) Test begin: test-name: "dangling separator" Test end: result-kind: pass actual-value: (expected-value-after-sep-in-object 1 0 #f (("a" . "a")) ()) expected-value: (expected-value-after-sep-in-object 1 0 #f (("a" . "a")) ()) Test begin: test-name: "object with minimum, passes" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object with minimum, fails" Test end: result-kind: pass actual-value: (object-too-small 0 1 #f () ) expected-value: (object-too-small 0 1 #f () ) Test begin: test-name: "object with maximum, succeeds at limit" Test end: result-kind: pass actual-value: ((("a" . "a") ("b" . "b"))) expected-value: ((("a" . "a") ("b" . "b"))) Test begin: test-name: "object with maximum, between" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object with maximum, above limit" Test end: result-kind: pass actual-value: (expected-end-of-object 2 0 2 (("a" . "a") ("b" . "b"))) expected-value: (expected-end-of-object 2 0 2 (("a" . "a") ("b" . "b"))) Test begin: test-name: "object with minimum and maximum, between" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object*/p with zero entries, successful" Test end: result-kind: pass actual-value: (()) expected-value: (()) Test begin: test-name: "object*/p with zero entries, failure" Test end: result-kind: pass actual-value: (expected-end-of-object ()) expected-value: (expected-end-of-object ()) Test begin: test-name: "object*/p with one entry, successful" Test end: result-kind: pass actual-value: ((("a" . "a"))) expected-value: ((("a" . "a"))) Test begin: test-name: "object*/p with one entry, fails because of key" Test end: result-kind: pass actual-value: (unexpected-key "b" ()) expected-value: (unexpected-key "b" ()) Test begin: test-name: "object*/p with one entry, fails because of value" Test end: result-kind: pass actual-value: (unexpected-value "a") expected-value: (unexpected-value "a") Test begin: test-name: "object*/p with one entry, fails because of multiple entries" Test end: result-kind: pass actual-value: (expected-end-of-object (("a" . "a"))) expected-value: (expected-end-of-object (("a" . "a"))) Test begin: test-name: "object*/p with two entries, in order" Test end: result-kind: pass actual-value: ((("a" . "a") ("b" . "b"))) expected-value: ((("a" . "a") ("b" . "b"))) Test begin: test-name: "object*/p with two entries, out of order" Test end: result-kind: pass actual-value: ((("b" . "b") ("a" . "a"))) expected-value: ((("b" . "b") ("a" . "a"))) Test begin: test-name: "object*/p with two entries, second keys fails" Test end: result-kind: pass actual-value: (unexpected-key "c" (("a" . "a"))) expected-value: (unexpected-key "c" (("a" . "a"))) Test begin: test-name: "object*/p with two entries, second value fails" Test end: result-kind: pass actual-value: (unexpected-value "b") expected-value: (unexpected-value "b") Group end: objects Group begin: arrays Test begin: test-name: "empty array" Test end: result-kind: pass actual-value: (#()) expected-value: (#()) Test begin: test-name: "empty array with whitespace" Test end: result-kind: pass actual-value: (#()) expected-value: (#()) Test begin: test-name: "empty array without end of array" Test end: result-kind: pass actual-value: (expected-comma-or-end-of-array 0 0 #f () ) expected-value: (expected-comma-or-end-of-array 0 0 #f () ) Test begin: test-name: "array with one element" Test end: result-kind: pass actual-value: (#("a")) expected-value: (#("a")) Test begin: test-name: "array with two elements" Test end: result-kind: pass actual-value: (#("a" "b")) expected-value: (#("a" "b")) Test begin: test-name: "array with one element, without end of array" Test end: result-kind: pass actual-value: (expected-comma-or-end-of-array 1 0 #f ("a") ) expected-value: (expected-comma-or-end-of-array 1 0 #f ("a") ) Test begin: test-name: "array with dangling comma" Test end: result-kind: pass actual-value: (expected-value-after-sep-in-array 1 0 #f ("a") ()) expected-value: (expected-value-after-sep-in-array 1 0 #f ("a") ()) Test begin: test-name: "array without separator" Test end: result-kind: pass actual-value: (expected-comma-or-end-of-array 1 0 #f ("a") ) expected-value: (expected-comma-or-end-of-array 1 0 #f ("a") ) Test begin: test-name: "array with minimum, at limit" Test end: result-kind: pass actual-value: (#(#t)) expected-value: (#(#t)) Test begin: test-name: "array with minimum, beyond limit" Test end: result-kind: pass actual-value: (#(#t #t)) expected-value: (#(#t #t)) Test begin: test-name: "array with minimum, below limit" Test end: result-kind: pass actual-value: (array-too-small 0 1 #f () ) expected-value: (array-too-small 0 1 #f () ) Test begin: test-name: "array with maximum, at limit" Test end: result-kind: pass actual-value: (#(#t #t)) expected-value: (#(#t #t)) Test begin: test-name: "array with maximum, empty" Test end: result-kind: pass actual-value: (#()) expected-value: (#()) Test begin: test-name: "array with maximum, beyond" Test end: result-kind: pass actual-value: (expected-end-of-array 2 0 2 (#t #t)) expected-value: (expected-end-of-array 2 0 2 (#t #t)) Test begin: test-name: "empty array*" Test end: result-kind: pass actual-value: (#()) expected-value: (#()) Test begin: test-name: "empty array* fails" Test end: result-kind: pass actual-value: (expected-end-of-array #()) expected-value: (expected-end-of-array #()) Test begin: test-name: "array* of one element, successful" Test end: result-kind: pass actual-value: (#(null)) expected-value: (#(null)) Test begin: test-name: "array* of one element, fails on empty" Test end: result-kind: pass actual-value: (unexpected-array-value) expected-value: (unexpected-array-value) Test begin: test-name: "array* of one element, fails on mismatch" Test end: result-kind: pass actual-value: (unexpected-array-value) expected-value: (unexpected-array-value) Test begin: test-name: "array* of two elements, successful" Test end: result-kind: pass actual-value: (#(#t #f)) expected-value: (#(#t #f)) Test begin: test-name: "array* of two elements, fails on permutation" Test end: result-kind: pass actual-value: (unexpected-array-value) expected-value: (unexpected-array-value) Test begin: test-name: "array* of two elements, fails on too short" Test end: result-kind: pass actual-value: (expected-array-separator 2 2 (#t)) expected-value: (expected-array-separator 2 2 (#t)) Test begin: test-name: "array* of two elements, fails on too long" Test end: result-kind: pass actual-value: (expected-end-of-array #(#t #f)) expected-value: (expected-end-of-array #(#t #f)) Group end: arrays Group begin: RFC8259/p Test begin: test-name: "example data" Test end: result-kind: pass actual-value: ((("url" . "https://example.com") ("cached" . #f) ("related" . null) ("pages" . #("/index.html" "/login.html")) ("metadata" ("author" . null)))) expected-value: ((("url" . "https://example.com") ("cached" . #f) ("related" . null) ("pages" . #("/index.html" "/login.html")) ("metadata" ("author" . null)))) Group end: RFC8259/p Group end: RFC8259 # of expected passes 431