|
| 1 | +// Copyright (c) 2016 Dr. Colin Hirsch and Daniel Frey |
| 2 | +// Please see LICENSE for license or visit https://github.com/taocpp/json/ |
| 3 | + |
| 4 | +#include "test.hh" |
| 5 | + |
| 6 | +#include <iostream> |
| 7 | + |
| 8 | +#include <tao/json.hh> |
| 9 | + |
| 10 | +namespace tao |
| 11 | +{ |
| 12 | + namespace json |
| 13 | + { |
| 14 | + void unit_test() |
| 15 | + { |
| 16 | + const value a = { { "a", { { "foo", 1 } } } }; |
| 17 | + const value q = { { "q", { { "bar", 2 } } } }; |
| 18 | + |
| 19 | + TEST_ASSERT( patch( {}, value::array( {} ) ) == null ); |
| 20 | + TEST_ASSERT( patch( a, value::array( {} ) ) == a ); |
| 21 | + TEST_ASSERT( patch( q, value::array( {} ) ) == q ); |
| 22 | + |
| 23 | + TEST_ASSERT( patch( {}, value::array( { { { "op", "test" }, { "path", "" }, { "value", null } } } ) ) == null ); |
| 24 | + TEST_THROWS( patch( {}, value::array( { { { "op", "test" }, { "path", "" }, { "value", 42 } } } ) ) ); |
| 25 | + |
| 26 | + TEST_ASSERT( patch( a, value::array( { { { "op", "test" }, { "path", "/a" }, { "value", { { "foo", 1 } } } } } ) ) == a ); |
| 27 | + TEST_ASSERT( patch( a, value::array( { { { "op", "test" }, { "path", "/a/foo" }, { "value", 1 } } } ) ) == a ); |
| 28 | + |
| 29 | + TEST_THROWS( patch( a, value::array( { { { "op", "test" }, { "path", "" }, { "value", 42 } } } ) ) ); |
| 30 | + TEST_THROWS( patch( a, value::array( { { { "op", "test" }, { "path", "/a" }, { "value", 42 } } } ) ) ); |
| 31 | + |
| 32 | + TEST_ASSERT( patch( a, value::array( { { { "op", "add" }, { "path", "/b" }, { "value", 42 } } } ) ) == value( { { "a", { { "foo", 1 } } }, { "b", 42 } } ) ); |
| 33 | + TEST_ASSERT( patch( a, value::array( { { { "op", "add" }, { "path", "/a/b" }, { "value", 42 } } } ) ) == value( { { "a", { { "foo", 1 }, { "b", 42 } } } } ) ); |
| 34 | + TEST_THROWS( patch( q, value::array( { { { "op", "add" }, { "path", "/a/b" }, { "value", 42 } } } ) ) ); |
| 35 | + |
| 36 | + // TODO: Way more tests... |
| 37 | + } |
| 38 | + |
| 39 | + } // json |
| 40 | + |
| 41 | +} // tao |
| 42 | + |
| 43 | +#include "main.hh" |
0 commit comments