]> gitweb.factorcode.org Git - factor.git/blob - basis/json/reader/reader-tests.factor
factor: clean up spaces in -tests files
[factor.git] / basis / json / reader / reader-tests.factor
1 USING: assocs arrays json.reader kernel strings tools.test
2 hashtables json io.streams.string math ;
3 IN: json.reader.tests
4
5 { f } [ "false" json> ] unit-test
6 { t } [ "true" json> ] unit-test
7 { json-null } [ "null" json> ] unit-test
8 { 0 } [ "0" json> ] unit-test
9 { 102 } [ "102" json> ] unit-test
10 { -102 } [ "-102" json> ] unit-test
11 { 102 } [ "+102" json> ] unit-test
12 { 1000.0 } [ "1.0e3" json> ] unit-test
13 { 1000.0 } [ "10e2" json> ] unit-test
14 { 102.0 } [ "102.0" json> ] unit-test
15 { 102.5 } [ "102.5" json> ] unit-test
16 { 102.5 } [ "102.50" json> ] unit-test
17 { -10250.0 } [ "-102.5e2" json> ] unit-test
18 { -10250.0 } [ "-102.5E+2" json> ] unit-test
19 { 10.25 } [ "1025e-2" json> ] unit-test
20 { 0.125 } [ "0.125" json> ] unit-test
21 { -0.125 } [ "-0.125" json> ] unit-test
22 { -0.00125 } [ "-0.125e-2" json> ] unit-test
23 { -012.5 } [ "-0.125e+2" json> ] unit-test
24
25 ! not widely supported by javascript, but allowed in the grammar, and a nice
26 ! feature to get
27 { -0.0 } [ "-0.0" json> ] unit-test
28
29 { " fuzzy  pickles " } [ """  " fuzzy  pickles " """  json> ] unit-test
30 { "while 1:\n\tpass" } [ """  "while 1:\n\tpass" """  json> ] unit-test
31 ! unicode is allowed in json
32 { "ß∂¬ƒ˚∆" } [ """  "ß∂¬ƒ˚∆""""  json> ] unit-test
33 { 8 9 10 12 13 34 47 92 } >string 1array [ """ "\\b\\t\\n\\f\\r\\"\\/\\\\" """ json> ] unit-test
34 { 0xabcd } >string 1array [ """ "\\uaBCd" """ json> ] unit-test
35 { "𝄞" } [ "\"\\ud834\\udd1e\"" json> ] unit-test
36
37 { H{ { "a" { } } { "b" 123 } } } [ "{\"a\":[],\"b\":123}" json> ] unit-test
38 { { } } [ "[]" json> ] unit-test
39 { { 1 "two" 3.0 } } [ """ [1, "two", 3.0] """ json> ] unit-test
40 { H{ } } [ "{}" json> ] unit-test
41
42 ! the returned hashtable should be different every time
43 { H{ } } [ "key" "value" "{}" json> ?set-at "{}" json> nip ] unit-test
44
45 { H{ { "US$" 1.0 } { "EU€" 1.5 } } } [ """ { "US$":1.00, "EU\\u20AC":1.50 } """ json> ] unit-test
46 { H{
47     { "fib" { 1 1 2 3 5 8 H{ { "etc" "etc" } } } }
48     { "prime" { 2 3 5 7 11 13 } }
49 } } [ """ {
50     "fib": [1, 1,  2,   3,     5,         8,
51         { "etc":"etc" } ],
52     "prime":
53     [ 2,3,     5,7,
54 11,
55 13
56 ]      }
57 """ json> ] unit-test
58
59 { 0 } [ "      0" json> ] unit-test
60 { 0 } [ "0      " json> ] unit-test
61 { 0 } [ "   0   " json> ] unit-test
62
63 { V{ H{ { "a" "b" } } H{ { "c" "d" } } } }
64 [ """{"a": "b"} {"c": "d"}""" [ read-jsons ] with-string-reader ] unit-test
65
66 ! empty objects are allowed as values in objects
67 { H{ { "foo" H{ } } } } [ "{ \"foo\" : {}}" json> ] unit-test
68
69 {
70     "\0\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\e\x1c\x1d\x1e\x1f"
71 } [
72     "\"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f\""
73     json>
74 ] unit-test
75
76 { 1/0. } [ "Infinity" json> ] unit-test
77 { -1/0. } [ "-Infinity" json> ] unit-test
78 { t } [ "NaN" json> fp-nan? ] unit-test