Skip to content

Commit eafddd0

Browse files
committed
More tests
1 parent 3d52b34 commit eafddd0

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/test/json/json_patch.cc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)