@@ -14,6 +14,7 @@ namespace tao
1414 void unit_test ()
1515 {
1616 const value a = { { " a" , { { " foo" , 1 } } } };
17+ const value b = { { " b" , value::array ( { 1 , 2 , 3 , 4 , 5 } ) } };
1718 const value q = { { " q" , { { " bar" , 2 } } } };
1819
1920 TEST_ASSERT ( patch ( {}, value::array ( {} ) ) == null );
@@ -32,9 +33,22 @@ namespace tao
3233 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) == value ( empty_object ) ); // TODO: allow comparison against empty_object directly
3334 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a/foo" } } } ) ) == value ( { { " a" , empty_object } } ) );
3435 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /q" } } } ) ) );
36+ TEST_THROWS ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " " } } } ) ) ); // TODO: clarify correctness
37+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b" } } } ) ) == value ( empty_object ) ); // TODO: allow comparison against empty_object directly
38+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/0" } } } ) ) == value ( { { " b" , value::array ( { 2 , 3 , 4 , 5 } ) } } ) );
39+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/1" } } } ) ) == value ( { { " b" , value::array ( { 1 , 3 , 4 , 5 } ) } } ) );
40+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/2" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 4 , 5 } ) } } ) );
41+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/3" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 3 , 5 } ) } } ) );
42+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/4" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 3 , 4 } ) } } ) );
43+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/5" } } } ) ) );
44+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/-" } } } ) ) );
45+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/a" } } } ) ) );
46+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) );
47+ TEST_THROWS ( patch ( q, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) );
3548
3649 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " add" }, { " path" , " /b" }, { " value" , 42 } } } ) ) == value ( { { " a" , { { " foo" , 1 } } }, { " b" , 42 } } ) );
3750 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " add" }, { " path" , " /a/b" }, { " value" , 42 } } } ) ) == value ( { { " a" , { { " foo" , 1 }, { " b" , 42 } } } } ) );
51+ TEST_THROWS ( patch ( a, value::array ( { { { " op" , " add" }, { " path" , " " }, { " value" , 42 } } } ) ) ); // TODO: clarify correctness
3852 TEST_THROWS ( patch ( q, value::array ( { { { " op" , " add" }, { " path" , " /a/b" }, { " value" , 42 } } } ) ) );
3953
4054 // TODO: Way more tests...
0 commit comments