1 dojo.provide('opensrf.tests.testJSON_v1');
3 dojo.require('DojoSRF');
5 doh.register("JSONTests", [
6 function test_version() {
7 doh.assertTrue(JSON_version() == 'wrapper');
9 function test_js2JSON() {
10 // Solo nulls and booleans are stringified XXX
11 doh.assertTrue(js2JSON(null) === "null");
12 doh.assertTrue(js2JSON(true) === "true");
13 doh.assertTrue(js2JSON(false) === "false");
14 doh.assertTrue(js2JSON(0) === 0);
15 doh.assertTrue(js2JSON(1.5) === 1.5);
16 doh.assertTrue(js2JSON(.7) === .7);
17 doh.assertTrue(js2JSON("") == '""');
18 doh.assertTrue(js2JSON("foo") == '"foo"');
20 doh.assertTrue(js2JSON("foo\n\t\n") == '"foo\\n\\t\\n"');
21 doh.assertTrue(js2JSON({"foo":"bar"}) == '{"foo":"bar"}');
22 doh.assertTrue(js2JSON({"foo":true}) == '{"foo":true}');
23 doh.assertTrue(js2JSON({"foo":0}) == '{"foo":0}');
24 doh.assertTrue(js2JSON([0,"foo",null,"true",true]) === '[0,"foo",null,"true",true]');
25 // Order of object attributes is not guaranteed
26 doh.assertTrue(js2JSON({"foo":{"one":null,"two":2}}) == '{"foo":{"two":2,"one":null}}');
28 function test_js2JSONRaw() {
29 // Solo nulls and booleans are stringified XXX
30 doh.assertTrue(js2JSONRaw(null) === "null");
31 doh.assertTrue(js2JSONRaw(true) === "true");
32 doh.assertTrue(js2JSONRaw(false) === "false");
33 doh.assertTrue(js2JSONRaw(0) === 0);
34 doh.assertTrue(js2JSONRaw(1.5) === 1.5);
35 doh.assertTrue(js2JSONRaw(.7) === .7);
36 doh.assertTrue(js2JSONRaw("") == '""');
37 doh.assertTrue(js2JSONRaw("foo") == '"foo"');
39 doh.assertTrue(js2JSONRaw("foo\n\t\n") == '"foo\\n\\t\\n"');
40 doh.assertTrue(js2JSONRaw({"foo":"bar"}) == '{"foo":"bar"}');
41 doh.assertTrue(js2JSONRaw({"foo":true}) == '{"foo":true}');
42 doh.assertTrue(js2JSONRaw({"foo":0}) == '{"foo":0}');
43 doh.assertTrue(js2JSONRaw([0,"foo",null,"true",true]) === '[0,"foo",null,"true",true]');
44 // Order of object attributes is not guaranteed
45 doh.assertTrue(js2JSONRaw({"foo":{"one":null,"two":2}}) == '{"foo":{"two":2,"one":null}}');
47 function test_JSON2js() {
48 // Standalone quoted nulls and booleans are converted to primitives
49 doh.assertTrue(JSON2js(null) === null);
50 doh.assertTrue(JSON2js("null") === null);
51 doh.assertTrue(JSON2js(true) === true);
52 doh.assertTrue(JSON2js("true") === true);
53 doh.assertTrue(JSON2js(false) === false);
54 doh.assertTrue(JSON2js("false") === false);
55 // Zero is zero and only zero
56 doh.assertTrue(JSON2js(0) === 0);
58 doh.assertTrue(JSON2js('""') === "");
60 doh.assertTrue(JSON2js('"foo"') == "foo");
61 // Array; access an index
62 doh.assertTrue(JSON2js('[0,1,2,3,4,5]')[1] == 1);
63 // Object; access a key
64 doh.assertTrue(JSON2js('{"foo":"bar"}').foo == "bar");
65 doh.assertTrue(JSON2js('{"foo":{"two":2,"one":null}}').foo.one === null);
66 doh.assertTrue(JSON2js('{"foo":{"two":2,"one":"null"}}').foo.one === "null");