@@ -31,21 +31,70 @@ assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 4);
3131assert . equal ( jsonpointer . get ( obj , "/d/e/1/b" ) , 5 ) ;
3232assert . equal ( jsonpointer . get ( obj , "/d/e/2/c" ) , 6 ) ;
3333
34- assert . equal ( jsonpointer . get ( obj , "/" ) , obj ) ;
34+ assert . equal ( jsonpointer . get ( obj , "" ) , obj ) ;
35+ assert . throws ( function ( ) {
36+ assert . equal ( jsonpointer . get ( obj , "a" ) , 3 ) ;
37+ } ) ;
3538
3639var complexKeys = {
3740 "a/b" : {
3841 c : 1
3942 } ,
4043 d : {
4144 "e/f" : 2
42- }
45+ } ,
46+ "~1" : 3 ,
47+ "01" : 4
4348}
4449
45- assert . equal ( jsonpointer . get ( complexKeys , "/a%2Fb/c" ) , 1 ) ;
46- assert . equal ( jsonpointer . get ( complexKeys , "/d/e%2Ff" ) , 2 ) ;
50+ assert . equal ( jsonpointer . get ( complexKeys , "/a~1b/c" ) , 1 ) ;
51+ assert . equal ( jsonpointer . get ( complexKeys , "/d/e~1f" ) , 2 ) ;
52+ assert . equal ( jsonpointer . get ( complexKeys , "/~01" ) , 3 ) ;
53+ assert . equal ( jsonpointer . get ( complexKeys , "/01" ) , 4 ) ;
4754assert . throws ( function ( ) {
4855 assert . equal ( jsonpointer . get ( complexKeys , "/a/b/c" ) , 1 ) ;
4956} ) ;
57+ assert . throws ( function ( ) {
58+ assert . equal ( jsonpointer . get ( complexKeys , "/~1" ) , 3 ) ;
59+ } ) ;
60+
61+ // draft-ietf-appsawg-json-pointer-08 has special array rules
62+ var ary = [ "zero" , "one" , "two" ] ;
63+
64+ assert . throws ( function ( ) {
65+ assert . equal ( jsonpointer . get ( ary , "/01" ) , "one" ) ;
66+ } ) ;
67+ //assert.equal(jsonpointer.set(ary, "/-", "three"), null);
68+ //assert.equal(ary[3], "three");
69+
70+ // Examples from the draft:
71+ var example = {
72+ "foo" : [ "bar" , "baz" ] ,
73+ "" : 0 ,
74+ "a/b" : 1 ,
75+ "c%d" : 2 ,
76+ "e^f" : 3 ,
77+ "g|h" : 4 ,
78+ "i\\j" : 5 ,
79+ "k\"l" : 6 ,
80+ " " : 7 ,
81+ "m~n" : 8
82+ } ;
83+
84+ assert . equal ( jsonpointer . get ( example , "" ) , example ) ;
85+ var ans = jsonpointer . get ( example , "/foo" ) ;
86+ assert . equal ( ans . length , 2 ) ;
87+ assert . equal ( ans [ 0 ] , "bar" ) ;
88+ assert . equal ( ans [ 1 ] , "baz" ) ;
89+ assert . equal ( jsonpointer . get ( example , "/foo/0" ) , "bar" ) ;
90+ assert . equal ( jsonpointer . get ( example , "/" ) , 0 ) ;
91+ assert . equal ( jsonpointer . get ( example , "/a~1b" ) , 1 ) ;
92+ assert . equal ( jsonpointer . get ( example , "/c%d" ) , 2 ) ;
93+ assert . equal ( jsonpointer . get ( example , "/e^f" ) , 3 ) ;
94+ assert . equal ( jsonpointer . get ( example , "/g|h" ) , 4 ) ;
95+ assert . equal ( jsonpointer . get ( example , "/i\\j" ) , 5 ) ;
96+ assert . equal ( jsonpointer . get ( example , "/k\"l" ) , 6 ) ;
97+ assert . equal ( jsonpointer . get ( example , "/ " ) , 7 ) ;
98+ assert . equal ( jsonpointer . get ( example , "/m~0n" ) , 8 ) ;
5099
51100console . log ( "All tests pass." ) ;
0 commit comments