@@ -13,16 +13,24 @@ namespace tao
1313 {
1414 void unit_test ()
1515 {
16+ const value n = null;
17+ const value ea = empty_array;
18+ const value eo = empty_object;
19+
1620 const value a = { { " a" , { { " foo" , 1 } } } };
1721 const value b = { { " b" , value::array ( { 1 , 2 , 3 , 4 } ) } };
22+
1823 const value q = { { " q" , { { " bar" , 2 } } } };
1924
20- TEST_ASSERT ( patch ( {}, value::array ( {} ) ) == null );
21- TEST_ASSERT ( patch ( a, value::array ( {} ) ) == a );
22- TEST_ASSERT ( patch ( q, value::array ( {} ) ) == q );
25+ TEST_ASSERT ( patch ( n, ea ) == n );
26+ TEST_ASSERT ( patch ( ea, ea ) == ea );
27+ TEST_ASSERT ( patch ( eo, ea ) == eo );
28+ TEST_ASSERT ( patch ( a, ea ) == a );
29+ TEST_ASSERT ( patch ( b, ea ) == b );
30+ TEST_ASSERT ( patch ( q, ea ) == q );
2331
24- TEST_ASSERT ( patch ( {} , value::array ( { { { " op" , " test" }, { " path" , " " }, { " value" , null } } } ) ) == null );
25- TEST_THROWS ( patch ( {} , value::array ( { { { " op" , " test" }, { " path" , " " }, { " value" , 42 } } } ) ) );
32+ TEST_ASSERT ( patch ( n , value::array ( { { { " op" , " test" }, { " path" , " " }, { " value" , null } } } ) ) == null );
33+ TEST_THROWS ( patch ( n , value::array ( { { { " op" , " test" }, { " path" , " " }, { " value" , 42 } } } ) ) );
2634
2735 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " test" }, { " path" , " /a" }, { " value" , { { " foo" , 1 } } } } } ) ) == a );
2836 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " test" }, { " path" , " /a/foo" }, { " value" , 1 } } } ) ) == a );
@@ -31,10 +39,12 @@ namespace tao
3139 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " test" }, { " path" , " /a" }, { " value" , 42 } } } ) ) );
3240
3341 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) == empty_object );
42+ TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a" } } } ) ) == eo );
3443 TEST_ASSERT ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /a/foo" } } } ) ) == value ( { { " a" , empty_object } } ) );
3544 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " /q" } } } ) ) );
3645 TEST_THROWS ( patch ( a, value::array ( { { { " op" , " remove" }, { " path" , " " } } } ) ) ); // TODO: clarify correctness
3746 TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b" } } } ) ) == empty_object );
47+ TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b" } } } ) ) == eo );
3848 TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/0" } } } ) ) == value ( { { " b" , value::array ( { 2 , 3 , 4 } ) } } ) );
3949 TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/1" } } } ) ) == value ( { { " b" , value::array ( { 1 , 3 , 4 } ) } } ) );
4050 TEST_ASSERT ( patch ( b, value::array ( { { { " op" , " remove" }, { " path" , " /b/2" } } } ) ) == value ( { { " b" , value::array ( { 1 , 2 , 4 } ) } } ) );
0 commit comments