]> git.evergreen-ils.org Git - OpenSRF.git/blob - src/javascript/tests/testJSON_v1.js
A few more tests for JSON_v1.js
[OpenSRF.git] / src / javascript / tests / testJSON_v1.js
1 dojo.provide('opensrf.tests.testJSON_v1');
2
3 dojo.require('DojoSRF');
4
5 doh.register("JSONTests", [
6     function test_version() {
7         doh.assertTrue(JSON_version() == 'wrapper');
8     },
9     function test_decodeJS() {
10         doh.assertTrue(decodeJS(0) === 0);
11         doh.assertTrue(decodeJS(null) === null);
12         doh.assertTrue(decodeJS("") === "");
13     },
14     function test_encodeJS() {
15         doh.assertTrue(encodeJS(0) === 0);
16         doh.assertTrue(encodeJS(null) === null);
17         doh.assertTrue(encodeJS("") === "");
18     },
19     function test_js2JSON() {
20         // Solo nulls and booleans are stringified XXX
21         doh.assertTrue(js2JSON(null) === "null");
22         doh.assertTrue(js2JSON(true) === "true");
23         doh.assertTrue(js2JSON(false) === "false");
24         doh.assertTrue(js2JSON(0) === 0);
25         doh.assertTrue(js2JSON(1.5) === 1.5);
26         doh.assertTrue(js2JSON(.7) === .7);
27         doh.assertTrue(js2JSON("") == '""');
28         doh.assertTrue(js2JSON("foo") == '"foo"');
29         // Escape sequences
30         doh.assertTrue(js2JSON("foo\n\t\n") == '"foo\\n\\t\\n"');
31         doh.assertTrue(js2JSON({"foo":"bar"}) == '{"foo":"bar"}');
32         doh.assertTrue(js2JSON({"foo":true}) == '{"foo":true}');
33         doh.assertTrue(js2JSON({"foo":0}) == '{"foo":0}');
34         doh.assertTrue(js2JSON([0,"foo",null,"true",true]) === '[0,"foo",null,"true",true]');
35         // Order of object attributes is not guaranteed
36         doh.assertTrue(js2JSON({"foo":{"one":null,"two":2}}) == '{"foo":{"two":2,"one":null}}');
37     },
38     function test_js2JSONRaw() {
39         // Solo nulls and booleans are stringified XXX
40         doh.assertTrue(js2JSONRaw(null) === "null");
41         doh.assertTrue(js2JSONRaw(true) === "true");
42         doh.assertTrue(js2JSONRaw(false) === "false");
43         doh.assertTrue(js2JSONRaw(0) === 0);
44         doh.assertTrue(js2JSONRaw(1.5) === 1.5);
45         doh.assertTrue(js2JSONRaw(.7) === .7);
46         doh.assertTrue(js2JSONRaw("") == '""');
47         doh.assertTrue(js2JSONRaw("foo") == '"foo"');
48         // Escape sequences
49         doh.assertTrue(js2JSONRaw("foo\n\t\n") == '"foo\\n\\t\\n"');
50         doh.assertTrue(js2JSONRaw({"foo":"bar"}) == '{"foo":"bar"}');
51         doh.assertTrue(js2JSONRaw({"foo":true}) == '{"foo":true}');
52         doh.assertTrue(js2JSONRaw({"foo":0}) == '{"foo":0}');
53         doh.assertTrue(js2JSONRaw([0,"foo",null,"true",true]) === '[0,"foo",null,"true",true]');
54         // Order of object attributes is not guaranteed
55         doh.assertTrue(js2JSONRaw({"foo":{"one":null,"two":2}}) == '{"foo":{"two":2,"one":null}}');
56     },
57     function test_JSON2jsRaw() {
58         // Standalone quoted nulls and booleans are converted to primitives
59         doh.assertTrue(JSON2jsRaw(null) === null);
60         doh.assertTrue(JSON2jsRaw("null") === null);
61         doh.assertTrue(JSON2jsRaw(true) === true);
62         doh.assertTrue(JSON2jsRaw("true") === true);
63         doh.assertTrue(JSON2jsRaw(false) === false);
64         doh.assertTrue(JSON2jsRaw("false") === false);
65         // Zero is zero and only zero
66         doh.assertTrue(JSON2jsRaw(0) === 0);
67         // Empty string
68         doh.assertTrue(JSON2jsRaw('""') === "");
69         // String
70         doh.assertTrue(JSON2jsRaw('"foo"') == "foo");
71         // Array; access an index
72         doh.assertTrue(JSON2jsRaw('[0,1,2,3,4,5]')[1] == 1);
73         // Object; access a key
74         doh.assertTrue(JSON2jsRaw('{"foo":"bar"}').foo == "bar");
75         doh.assertTrue(JSON2jsRaw('{"foo":{"two":2,"one":null}}').foo.one === null);
76         doh.assertTrue(JSON2jsRaw('{"foo":{"two":2,"one":"null"}}').foo.one === "null");
77     },
78     function test_JSON2js() {
79         // Standalone quoted nulls and booleans are converted to primitives
80         doh.assertTrue(JSON2js(null) === null);
81         doh.assertTrue(JSON2js("null") === null);
82         doh.assertTrue(JSON2js(true) === true);
83         doh.assertTrue(JSON2js("true") === true);
84         doh.assertTrue(JSON2js(false) === false);
85         doh.assertTrue(JSON2js("false") === false);
86         // Zero is zero and only zero
87         doh.assertTrue(JSON2js(0) === 0);
88         // Empty string
89         doh.assertTrue(JSON2js('""') === "");
90         // String
91         doh.assertTrue(JSON2js('"foo"') == "foo");
92         // Array; access an index
93         doh.assertTrue(JSON2js('[0,1,2,3,4,5]')[1] == 1);
94         // Object; access a key
95         doh.assertTrue(JSON2js('{"foo":"bar"}').foo == "bar");
96         doh.assertTrue(JSON2js('{"foo":{"two":2,"one":null}}').foo.one === null);
97         doh.assertTrue(JSON2js('{"foo":{"two":2,"one":"null"}}').foo.one === "null");
98     }
99 ]);