@@ -40,10 +40,25 @@ assert.equal(jsonpointer.get(obj, '/d/e/0/a'), 4)
4040assert . equal ( jsonpointer . get ( obj , '/d/e/1/b' ) , 5 )
4141assert . equal ( jsonpointer . get ( obj , '/d/e/2/c' ) , 6 )
4242
43+ // can set `null` as a value
44+ assert . equal ( jsonpointer . set ( obj , '/f/g/h/foo/0' , null ) , 'test' )
45+ assert . strictEqual ( jsonpointer . get ( obj , '/f/g/h/foo/0' ) , null )
46+ assert . equal ( jsonpointer . set ( obj , '/b/c' , null ) , 3 )
47+ assert . strictEqual ( jsonpointer . get ( obj , '/b/c' ) , null )
48+
4349assert . equal ( jsonpointer . get ( obj , '' ) , obj )
4450assert . throws ( function ( ) { jsonpointer . get ( obj , 'a' ) } , validateError )
4551assert . throws ( function ( ) { jsonpointer . get ( obj , 'a/' ) } , validateError )
4652
53+ // can unset values with `undefined`
54+ jsonpointer . set ( obj , '/a' , undefined )
55+ assert . strictEqual ( jsonpointer . get ( obj , '/a' ) , undefined )
56+ jsonpointer . set ( obj , '/d/e/1' , undefined )
57+ assert . strictEqual ( jsonpointer . get ( obj , '/d/e/1' ) , undefined )
58+
59+ // returns `undefined` when path extends beyond any existing objects
60+ assert . strictEqual ( jsonpointer . get ( obj , '/x/y/z' ) , undefined )
61+
4762function validateError ( err ) {
4863 if ( ( err instanceof Error ) && / I n v a l i d J S O N p o i n t e r / . test ( err . message ) ) {
4964 return true
0 commit comments