aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-04-20 13:49:33 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-04-20 13:49:33 +0300
commitd85809f7b86d53a83de4744b395e61df085e727f (patch)
tree32093c9bdbaa6c4ab42f34f38cfb6f401ec46d4d /library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
parentf8b13db877cf0234f2bdf7092164f57eebc52aa1 (diff)
downloadydb-d85809f7b86d53a83de4744b395e61df085e727f.tar.gz
intermediate changes
ref:95923961b070d9d9b37fcb1d21bffeae90f3d022
Diffstat (limited to 'library/cpp/scheme/tests/ut/scheme_merge_ut.cpp')
-rw-r--r--library/cpp/scheme/tests/ut/scheme_merge_ut.cpp63
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}]}");
+ }
+
};