1 | dojo.provide("dojox.json.tests.ref"); |
---|
2 | dojo.require("dojox.json.ref"); |
---|
3 | |
---|
4 | doh.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 usingSchemas(t) { |
---|
30 | var testStr = '{id:"/dog/1",eats:{$ref:"/cat/2"},aTime:"2008-11-07T20:26:17-07:00"}'; |
---|
31 | var schemas = { |
---|
32 | "/dog/":{prototype:{barks:true},properties:{aTime:{format:'date-time'}}}, |
---|
33 | "/cat/":{prototype:{meows:true}} |
---|
34 | } |
---|
35 | var testObj = dojox.json.ref.fromJson(testStr,{ |
---|
36 | schemas:schemas |
---|
37 | }); |
---|
38 | t.t(testObj.barks); |
---|
39 | t.t(testObj.aTime instanceof Date); |
---|
40 | t.t(testObj.eats.meows); |
---|
41 | }, |
---|
42 | function secondLevelLazy(t) { |
---|
43 | var testStr = '[{$ref:1,foo:"bar"},{$ref:2, me:{$ref:2},first:{$ref:1}}]'; |
---|
44 | var mirrorObj = dojox.json.ref.fromJson(testStr); |
---|
45 | t.is(mirrorObj[0].foo,"bar"); |
---|
46 | t.is(mirrorObj[1],mirrorObj[1].me); |
---|
47 | t.is(mirrorObj[0],mirrorObj[1].first); |
---|
48 | } |
---|
49 | |
---|
50 | /*, |
---|
51 | function performanceTest(t) { |
---|
52 | 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" }]'; |
---|
53 | var now = new Date().getTime(); |
---|
54 | for(var i=0;i<1000;i++){ |
---|
55 | } |
---|
56 | console.log("Just Loop",new Date().getTime()-now); |
---|
57 | now = new Date().getTime(); |
---|
58 | var result; |
---|
59 | for(i=0;i<1000;i++){ |
---|
60 | result = dojo.fromJson(normalishJson); |
---|
61 | } |
---|
62 | console.log("Normal fromJson",new Date().getTime()-now, result, normalishJson.length); |
---|
63 | now = new Date().getTime(); |
---|
64 | for(i=0;i<1000;i++){ |
---|
65 | result = dojox.json.ref.fromJson(normalishJson); |
---|
66 | } |
---|
67 | console.log("JSON Referencing toJson",new Date().getTime()-now, result); |
---|
68 | }*/ |
---|
69 | ]); |
---|