diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-20 13:49:33 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-20 13:49:33 +0300 |
commit | d85809f7b86d53a83de4744b395e61df085e727f (patch) | |
tree | 32093c9bdbaa6c4ab42f34f38cfb6f401ec46d4d /library/cpp/scheme/tests | |
parent | f8b13db877cf0234f2bdf7092164f57eebc52aa1 (diff) | |
download | ydb-d85809f7b86d53a83de4744b395e61df085e727f.tar.gz |
intermediate changes
ref:95923961b070d9d9b37fcb1d21bffeae90f3d022
Diffstat (limited to 'library/cpp/scheme/tests')
-rw-r--r-- | library/cpp/scheme/tests/ut/scheme_merge_ut.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp b/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp index 2a06cf110d..38c5283383 100644 --- a/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp +++ b/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp @@ -169,4 +169,67 @@ Y_UNIT_TEST_SUITE(TSchemeMergeTest) { UNIT_ASSERT_JSON_EQ_JSON(a, "[1,2,3]"); UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[1,2,3]}"); } + + Y_UNIT_TEST(TestMerge8) { + NSc::TValue v; + v["a"] = NSc::TValue::FromJson("[0.125,0.12,0.1,0.08,0.06]"); + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[0.125,0.12,0.1,0.08,0.06]}"); + + NSc::TMergeOptions options = {.ArrayMergeMode = NSc::TMergeOptions::EArrayMergeMode::Merge}; + NSc::TValue a = v.TrySelectOrAdd("a")->MergeUpdateJson("[1,2,3]", options); + + UNIT_ASSERT_JSON_EQ_JSON(a, "[1,2,3,0.08,0.06]"); + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[1,2,3,0.08,0.06]}"); + } + + Y_UNIT_TEST(TestMerge9) { + NSc::TValue v; + v["a"] = NSc::TValue::FromJson("[{a:1},{b:2,d:2}]"); + + NSc::TValue update; + update["a"] = NSc::TValue::FromJson("[{},{a:1,d:1},{b:2}]"); + + NSc::TMergeOptions options = {.ArrayMergeMode = NSc::TMergeOptions::EArrayMergeMode::Merge}; + v.MergeUpdate(update, options); + + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[{a:1},{a:1,b:2,d:1},{b:2}]}"); + + //no uncontrolled grow + v.MergeUpdate(update, options); + v.MergeUpdate(update, options); + + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[{a:1},{a:1,b:2,d:1},{b:2}]}"); + } + + Y_UNIT_TEST(TestMerge10) { + NSc::TValue v; + v["a"] = NSc::TValue::FromJson("[0.125,0.12,0.1,0.08,0.06]"); + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[0.125,0.12,0.1,0.08,0.06]}"); + + NSc::TMergeOptions options = {.ArrayMergeMode = NSc::TMergeOptions::EArrayMergeMode::Merge}; + NSc::TValue delta = NSc::TValue::FromJson("{a:[1,2,3,4,5,6]}"); + v.ReverseMerge(delta, options); + + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[0.125,0.12,0.1,0.08,0.06,6]}"); + } + + Y_UNIT_TEST(TestMerge11) { + NSc::TValue v; + v["a"] = NSc::TValue::FromJson("[{a:1},{b:2,d:2}]"); + + NSc::TValue update; + update["a"] = NSc::TValue::FromJson("[{},{a:1,d:1},{b:2}]"); + + NSc::TMergeOptions options = {.ArrayMergeMode = NSc::TMergeOptions::EArrayMergeMode::Merge}; + v.ReverseMerge(update, options); + + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[{a:1},{a:1,b:2,d:2},{b:2}]}"); + + //no uncontrolled grow + v.ReverseMerge(update, options); + v.ReverseMerge(update, options); + + UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[{a:1},{a:1,b:2,d:2},{b:2}]}"); + } + }; |