source: Dev/trunk/src/client/dojox/json/tests/ref.js @ 525

Last change on this file since 525 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 3.0 KB
Line 
1dojo.provide("dojox.json.tests.ref");
2dojo.require("dojox.json.ref");
3
4doh.register("dojox.json.tests.ref", [
5        function fromRefJson(t) {
6                var testStr = '{a:{$ref:"#"},id:"root",c:{d:"e",f:{$ref:"root.c"}},b:{$ref:"#.c"},"an array":["a string"],"a string":{$ref:"#an array.0"}}';
7
8                var mirrorObj = dojox.json.ref.fromJson(testStr);
9                t.assertEqual(mirrorObj, mirrorObj.a);
10                t.assertEqual(mirrorObj.c, mirrorObj.c.f);
11                t.assertEqual(mirrorObj.c, mirrorObj.b);
12                t.assertEqual(mirrorObj["a string"], "a string");
13        },
14        function toAndFromRefJson(t) {
15                var testObj = {a:{},b:{"has space":{}}};
16                testObj.a.d= testObj;
17                var arrayItem = testObj.array = [{}];
18                arrayItem[1] = arrayItem[0];
19                testObj.b.g=testObj.a;
20                testObj.b["has space"].f = testObj.b;
21                testObj.b.h=testObj.a;
22                var mirrorObj = dojox.json.ref.fromJson(dojox.json.ref.toJson(testObj));
23                t.assertEqual(mirrorObj.a.d, mirrorObj);
24                t.assertEqual(mirrorObj.b.g, mirrorObj.a);
25                t.assertEqual(mirrorObj.b["has space"].f, mirrorObj.b);
26                t.assertEqual(mirrorObj.b.h, mirrorObj.a);
27                t.assertEqual(mirrorObj.array[0], mirrorObj.array[1]);
28        },
29        function toJsonGeneratedIds(t){
30                // Make obj reference b twice to ensure that there is at least one $ref
31                // from obj to b.
32                var b = {__id: 'bId', x: 2},
33                obj = {a: 1, b1: b, b2: b};
34                dojox.json.ref.toJson(obj);
35                t.f(obj.hasOwnProperty('__id'), 'obj has __id property.');
36                t.t(obj.b1 === b, 'obj.b1 !== b');
37                t.t(obj.b2 === b, 'obj.b2 !== b');
38                t.is('bId', b.__id, 'b.__id');
39        },
40        function usingSchemas(t) {
41                var testStr = '{id:"/dog/1",eats:{$ref:"/cat/2"},aTime:"2008-11-07T20:26:17-07:00"}';
42                var schemas = {
43                        "/dog/":{prototype:{barks:true},properties:{aTime:{format:'date-time'}}},
44                        "/cat/":{prototype:{meows:true}}
45                }
46                var testObj = dojox.json.ref.fromJson(testStr,{
47                        schemas:schemas
48                });
49                t.t(testObj.barks);
50                t.t(testObj.aTime instanceof Date);
51                t.t(testObj.eats.meows);
52        },
53        function secondLevelLazy(t) {
54                var testStr = '[{$ref:1,foo:"bar"},{$ref:2, me:{$ref:2},first:{$ref:1}}]';
55                var mirrorObj = dojox.json.ref.fromJson(testStr);
56                t.is(mirrorObj[0].foo,"bar");
57                t.is(mirrorObj[1],mirrorObj[1].me);
58                t.is(mirrorObj[0],mirrorObj[1].first);
59        }
60       
61        /*,
62        function performanceTest(t) {
63                var normalishJson= '[{"id":"1", "created":"2007-10-23T14:40:18Z","address":"somewhere","phoneNumber":"555-5555","comment":"this is great",      "firstName":"Jim",      "lastName":"Jones"},{"id":"20","created":"2008-06-03T19:45:12Z",        "firstName":"Kristopher",       "lastName":"dddddd"     },{"id":"23",   "foo":"ba=sr",  "firstName":"Jennika",  "lastName":"Zyp"        }]';
64                var now = new Date().getTime();
65                for(var i=0;i<1000;i++){
66                }
67                console.log("Just Loop",new Date().getTime()-now);
68                now = new Date().getTime();
69                var result;
70                for(i=0;i<1000;i++){
71                        result = dojo.fromJson(normalishJson);
72                }
73                console.log("Normal fromJson",new Date().getTime()-now, result, normalishJson.length);
74                now = new Date().getTime();
75                for(i=0;i<1000;i++){
76                        result = dojox.json.ref.fromJson(normalishJson);
77                }
78                console.log("JSON Referencing toJson",new Date().getTime()-now, result);
79        }*/
80]);
Note: See TracBrowser for help on using the repository browser.