@@ -14,7 +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 } ) } };
17+ const value b = { { " b" , value::array ( { 1 , 2 , 3 , 4 } ) } };
1818 const value q = { { " q" , { { " bar" , 2 } } } };
1919
2020 TEST_ASSERT ( patch ( {}, value::array ( {} ) ) == null );
@@ -30,25 +30,31 @@ namespace tao
3030 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " test" }, { " path" , " " }, { " value" , 42 } } } ) ) );
3131 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " test" }, { " path" , " /a" }, { " value" , 42 } } } ) ) );
3232
33- TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) == value ( empty_object ) ); // TODO: allow comparison against empty_object directly
33+ TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) == empty_object );
3434 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a/foo" } } } ) ) == value ( { { " a" , empty_object } } ) );
3535 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /q" } } } ) ) );
3636 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" } } } ) ) );
37+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b" } } } ) ) == empty_object );
38+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/0" } } } ) ) == value ( { { " b" , value::array ( { 2 , 3 , 4 } ) } } ) );
39+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/1" } } } ) ) == value ( { { " b" , value::array ( { 1 , 3 , 4 } ) } } ) );
40+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/2" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 4 } ) } } ) );
41+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/3" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 3 } ) } } ) );
42+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/4" } } } ) ) );
4443 TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/-" } } } ) ) );
4544 TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/a" } } } ) ) );
4645 TEST_THROWS ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) );
4746 TEST_THROWS ( patch ( q, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) );
4847
4948 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " add" }, { " path" , " /b" }, { " value" , 42 } } } ) ) == value ( { { " a" , { { " foo" , 1 } } }, { " b" , 42 } } ) );
5049 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
50+ TEST_THROWS ( patch ( a, value::array ( { { { " op" , " add" }, { " path" , " " }, { " value" , 42 } } } ) ) );
51+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/0" }, { " value" , 42 } } } ) ) == value ( { { " b" , value::array ( { 42 , 1 , 2 , 3 , 4 } ) } } ) );
52+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/1" }, { " value" , 42 } } } ) ) == value ( { { " b" , value::array ( { 1 , 42 , 2 , 3 , 4 } ) } } ) );
53+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/2" }, { " value" , 42 } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 42 , 3 , 4 } ) } } ) );
54+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/3" }, { " value" , 42 } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 3 , 42 , 4 } ) } } ) );
55+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/-" }, { " value" , 42 } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 3 , 4 , 42 } ) } } ) );
56+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/4" }, { " value" , 42 } } } ) ) );
57+ TEST_THROWS ( patch ( b, value::array ( { { { " op" , " add" }, { " path" , " /b/a" }, { " value" , 42 } } } ) ) );
5258 TEST_THROWS ( patch ( q, value::array ( { { { " op" , " add" }, { " path" , " /a/b" }, { " value" , 42 } } } ) ) );
5359
5460 // TODO: Way more tests...
0 commit comments