aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
diff options
context:
space:
mode:
authorRuslan Kovalev <ruslan.a.kovalev@gmail.com>2022-02-10 16:46:45 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:46:45 +0300
commit9123176b341b6f2658cff5132482b8237c1416c8 (patch)
tree49e222ea1c5804306084bb3ae065bb702625360f /library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
parent59e19371de37995fcb36beb16cd6ec030af960bc (diff)
downloadydb-9123176b341b6f2658cff5132482b8237c1416c8.tar.gz
Restoring authorship annotation for Ruslan Kovalev <ruslan.a.kovalev@gmail.com>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/scheme/tests/ut/scheme_merge_ut.cpp')
-rw-r--r--library/cpp/scheme/tests/ut/scheme_merge_ut.cpp312
1 files changed, 156 insertions, 156 deletions
diff --git a/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp b/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
index 00575e4268..2a06cf110d 100644
--- a/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
+++ b/library/cpp/scheme/tests/ut/scheme_merge_ut.cpp
@@ -1,172 +1,172 @@
#include <library/cpp/scheme/scimpl_private.h>
#include <library/cpp/scheme/ut_utils/scheme_ut_utils.h>
#include <library/cpp/testing/unittest/registar.h>
-
-#include <util/stream/null.h>
+
+#include <util/stream/null.h>
#include <library/cpp/string_utils/quote/quote.h>
-#include <util/string/subst.h>
-#include <util/string/util.h>
-
-#include <type_traits>
-
-
-Y_UNIT_TEST_SUITE(TSchemeMergeTest) {
-
- void DoTestReverseMerge(TStringBuf lhs, TStringBuf rhs, TStringBuf res) {
- NSc::TValue v = NSc::TValue::FromJson(lhs);
- v.ReverseMerge(NSc::TValue::FromJson(rhs));
- UNIT_ASSERT(NSc::TValue::Equal(v, NSc::TValue::FromJson(res)));
- }
-
- Y_UNIT_TEST(TestReverseMerge) {
- DoTestReverseMerge("{a:{x:y, b:c}}", "{a:{u:w, b:d}}", "{a:{u:w, x:y, b:c}}");
- DoTestReverseMerge("null", "{x:y}", "{x:y}");
- DoTestReverseMerge("null", "[b]", "[b]");
- DoTestReverseMerge("[a]", "[b]", "[a]");
- DoTestReverseMerge("{x:null}", "{x:b}", "{x:b}");
+#include <util/string/subst.h>
+#include <util/string/util.h>
+
+#include <type_traits>
+
+
+Y_UNIT_TEST_SUITE(TSchemeMergeTest) {
+
+ void DoTestReverseMerge(TStringBuf lhs, TStringBuf rhs, TStringBuf res) {
+ NSc::TValue v = NSc::TValue::FromJson(lhs);
+ v.ReverseMerge(NSc::TValue::FromJson(rhs));
+ UNIT_ASSERT(NSc::TValue::Equal(v, NSc::TValue::FromJson(res)));
+ }
+
+ Y_UNIT_TEST(TestReverseMerge) {
+ DoTestReverseMerge("{a:{x:y, b:c}}", "{a:{u:w, b:d}}", "{a:{u:w, x:y, b:c}}");
+ DoTestReverseMerge("null", "{x:y}", "{x:y}");
+ DoTestReverseMerge("null", "[b]", "[b]");
+ DoTestReverseMerge("[a]", "[b]", "[a]");
+ DoTestReverseMerge("{x:null}", "{x:b}", "{x:b}");
}
- Y_UNIT_TEST(TestMerge) {
- TStringBuf data = "{ a : [ { b : 1, d : { e : -1.e5 } }, { f : 0, g : [ h, i ] } ] }";
- NSc::TValue v = NSc::TValue::FromJson(data);
- UNIT_ASSERT_VALUES_EQUAL(v.ToJson(true), v.Clone().ToJson(true));
+ Y_UNIT_TEST(TestMerge) {
+ TStringBuf data = "{ a : [ { b : 1, d : { e : -1.e5 } }, { f : 0, g : [ h, i ] } ] }";
+ NSc::TValue v = NSc::TValue::FromJson(data);
+ UNIT_ASSERT_VALUES_EQUAL(v.ToJson(true), v.Clone().ToJson(true));
UNIT_ASSERT(v.Has("a"));
- UNIT_ASSERT(v["a"].Has(1));
- UNIT_ASSERT(v["a"][0].Has("b"));
- UNIT_ASSERT(v["a"][0].Has("d"));
- UNIT_ASSERT(1 == v["a"][0]["b"]);
- UNIT_ASSERT(v["a"][0]["d"].Has("e"));
- UNIT_ASSERT(-1.e5 == v["a"][0]["d"]["e"]);
- UNIT_ASSERT(v["a"][1].Has("f"));
- UNIT_ASSERT(v["a"][1].Has("g"));
- UNIT_ASSERT(0. == v["a"][1]["f"]);
- UNIT_ASSERT(v["a"][1]["g"].IsArray());
- UNIT_ASSERT(v["a"][1]["g"].Has(1));
+ UNIT_ASSERT(v["a"].Has(1));
+ UNIT_ASSERT(v["a"][0].Has("b"));
+ UNIT_ASSERT(v["a"][0].Has("d"));
+ UNIT_ASSERT(1 == v["a"][0]["b"]);
+ UNIT_ASSERT(v["a"][0]["d"].Has("e"));
+ UNIT_ASSERT(-1.e5 == v["a"][0]["d"]["e"]);
+ UNIT_ASSERT(v["a"][1].Has("f"));
+ UNIT_ASSERT(v["a"][1].Has("g"));
+ UNIT_ASSERT(0. == v["a"][1]["f"]);
+ UNIT_ASSERT(v["a"][1]["g"].IsArray());
+ UNIT_ASSERT(v["a"][1]["g"].Has(1));
UNIT_ASSERT(TStringBuf("h") == v["a"][1]["g"][0]);
UNIT_ASSERT(TStringBuf("i") == v["a"][1]["g"][1]);
-
- {
- TStringBuf data = "{ a : [ { d : 42 }, { g : [ 3 ] } ], q : r }";
-
- NSc::TValue v1 = NSc::TValue::FromJson(data);
- UNIT_ASSERT_VALUES_EQUAL(v1.ToJson(true), v1.Clone().ToJson(true));
- UNIT_ASSERT(NSc::TValue::Equal(v1, v1.FromJson(v1.ToJson())));
-
- NSc::TValue v2;
- v2.MergeUpdate(v["a"]);
+
+ {
+ TStringBuf data = "{ a : [ { d : 42 }, { g : [ 3 ] } ], q : r }";
+
+ NSc::TValue v1 = NSc::TValue::FromJson(data);
+ UNIT_ASSERT_VALUES_EQUAL(v1.ToJson(true), v1.Clone().ToJson(true));
+ UNIT_ASSERT(NSc::TValue::Equal(v1, v1.FromJson(v1.ToJson())));
+
+ NSc::TValue v2;
+ v2.MergeUpdate(v["a"]);
UNIT_ASSERT_C(NSc::TValue::Equal(v["a"], v2), Sprintf("\n%s\n!=\n%s\n", v["a"].ToJson().data(), v2.ToJson().data()));
-
- v.MergeUpdate(v1);
+
+ v.MergeUpdate(v1);
UNIT_ASSERT_C(!NSc::TValue::Equal(v["a"], v2), Sprintf("\n%s\n!=\n%s\n", v["a"].ToJson().data(), v2.ToJson().data()));
- v2.MergeUpdate(v1["a"]);
+ v2.MergeUpdate(v1["a"]);
UNIT_ASSERT_C(NSc::TValue::Equal(v["a"], v2), Sprintf("\n%s\n!=\n%s\n", v["a"].ToJson().data(), v2.ToJson().data()));
- }
-
+ }
+
UNIT_ASSERT(v.Has("a"));
UNIT_ASSERT(v.Has("q"));
UNIT_ASSERT(TStringBuf("r") == v["q"]);
- UNIT_ASSERT(v["a"].Has(1));
- UNIT_ASSERT(!v["a"][0].Has("b"));
- UNIT_ASSERT(v["a"][0].Has("d"));
- UNIT_ASSERT(!v["a"][0]["d"].IsArray());
- UNIT_ASSERT(!v["a"][0]["d"].IsDict());
- UNIT_ASSERT(42 == v["a"][0]["d"]);
- UNIT_ASSERT(!v["a"][1].Has("f"));
- UNIT_ASSERT(v["a"][1].Has("g"));
- UNIT_ASSERT(v["a"][1]["g"].IsArray());
- UNIT_ASSERT(!v["a"][1]["g"].Has(1));
- UNIT_ASSERT(3 == v["a"][1]["g"][0]);
- }
-
- Y_UNIT_TEST(TestMerge1) {
- TStringBuf data = "[ { a : { b : d } } ]";
-
- NSc::TValue wcopy = NSc::TValue::FromJson(data);
-
- TStringBuf data1 = "[ { a : { b : c } } ]";
-
- wcopy.MergeUpdateJson(data1);
-
- {
- TString json = wcopy.ToJson(true);
- SubstGlobal(json, "\"", "");
- UNIT_ASSERT_VALUES_EQUAL(json, "[{a:{b:c}}]");
- }
- }
-
- Y_UNIT_TEST(TestMerge2) {
- TStringBuf data = "{ a : { b : c }, q : { x : y } }";
-
- NSc::TValue wcopy = NSc::TValue::FromJson(data);
-
- TStringBuf data1 = "{ a : { e : f } }";
-
- wcopy.MergeUpdateJson(data1);
-
- {
- TString json = wcopy.ToJson(true);
- SubstGlobal(json, "\"", "");
- UNIT_ASSERT_VALUES_EQUAL(json, "{a:{b:c,e:f},q:{x:y}}");
- }
- }
-
- Y_UNIT_TEST(TestMerge3) {
- TStringBuf data = "{ g : { x : { a : { b : c }, q : { x : y } }, y : fff } }";
-
- NSc::TValue wcopy = NSc::TValue::FromJson(data);
-
- TStringBuf data1 = "{ g : { x : { a : { e : f } } } }";
-
- wcopy.MergeUpdateJson(data1);
-
- {
- TString json = wcopy.ToJson(true);
- SubstGlobal(json, "\"", "");
- UNIT_ASSERT_VALUES_EQUAL(json, "{g:{x:{a:{b:c,e:f},q:{x:y}},y:fff}}");
- }
- }
-
- Y_UNIT_TEST(TestMerge4) {
- TStringBuf data = "{ a : 1, b : { c : 2, d : { q : f } } }";
- NSc::TValue val = NSc::TValue::FromJson(data);
-
- TStringBuf data1 = "{ a : 2, b : { c : 3, d : { q : e }, g : h } }";
-
- val.MergeUpdateJson(data1);
-
- {
- TString json = val.ToJson(true);
- SubstGlobal(json, "\"", "");
-
- UNIT_ASSERT_VALUES_EQUAL(json, "{a:2,b:{c:3,d:{q:e},g:h}}");
- }
- }
-
- Y_UNIT_TEST(TestMerge5) {
- NSc::TValue v0;
- v0.GetOrAdd("x").MergeUpdate(NSc::TValue(1));
- UNIT_ASSERT_VALUES_EQUAL(v0.ToJson(), "{\"x\":1}");
- }
-
- Y_UNIT_TEST(TestMerge6) {
- NSc::TValue va = NSc::TValue::FromJson("{\"x\":\"abc\",\"y\":\"def\"}");
- NSc::TValue vb = va.Get("y");
- NSc::TValue diff;
- diff["y"] = vb;
- va.MergeUpdate(diff);
- UNIT_ASSERT_VALUES_EQUAL(va.ToJson(), "{\"x\":\"abc\",\"y\":\"def\"}");
- UNIT_ASSERT_VALUES_EQUAL(vb.ToJson(), "\"def\"");
- UNIT_ASSERT_VALUES_EQUAL(diff.ToJson(), "{\"y\":\"def\"}");
- }
-
- Y_UNIT_TEST(TestMerge7) {
- 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]}");
-
+ UNIT_ASSERT(v["a"].Has(1));
+ UNIT_ASSERT(!v["a"][0].Has("b"));
+ UNIT_ASSERT(v["a"][0].Has("d"));
+ UNIT_ASSERT(!v["a"][0]["d"].IsArray());
+ UNIT_ASSERT(!v["a"][0]["d"].IsDict());
+ UNIT_ASSERT(42 == v["a"][0]["d"]);
+ UNIT_ASSERT(!v["a"][1].Has("f"));
+ UNIT_ASSERT(v["a"][1].Has("g"));
+ UNIT_ASSERT(v["a"][1]["g"].IsArray());
+ UNIT_ASSERT(!v["a"][1]["g"].Has(1));
+ UNIT_ASSERT(3 == v["a"][1]["g"][0]);
+ }
+
+ Y_UNIT_TEST(TestMerge1) {
+ TStringBuf data = "[ { a : { b : d } } ]";
+
+ NSc::TValue wcopy = NSc::TValue::FromJson(data);
+
+ TStringBuf data1 = "[ { a : { b : c } } ]";
+
+ wcopy.MergeUpdateJson(data1);
+
+ {
+ TString json = wcopy.ToJson(true);
+ SubstGlobal(json, "\"", "");
+ UNIT_ASSERT_VALUES_EQUAL(json, "[{a:{b:c}}]");
+ }
+ }
+
+ Y_UNIT_TEST(TestMerge2) {
+ TStringBuf data = "{ a : { b : c }, q : { x : y } }";
+
+ NSc::TValue wcopy = NSc::TValue::FromJson(data);
+
+ TStringBuf data1 = "{ a : { e : f } }";
+
+ wcopy.MergeUpdateJson(data1);
+
+ {
+ TString json = wcopy.ToJson(true);
+ SubstGlobal(json, "\"", "");
+ UNIT_ASSERT_VALUES_EQUAL(json, "{a:{b:c,e:f},q:{x:y}}");
+ }
+ }
+
+ Y_UNIT_TEST(TestMerge3) {
+ TStringBuf data = "{ g : { x : { a : { b : c }, q : { x : y } }, y : fff } }";
+
+ NSc::TValue wcopy = NSc::TValue::FromJson(data);
+
+ TStringBuf data1 = "{ g : { x : { a : { e : f } } } }";
+
+ wcopy.MergeUpdateJson(data1);
+
+ {
+ TString json = wcopy.ToJson(true);
+ SubstGlobal(json, "\"", "");
+ UNIT_ASSERT_VALUES_EQUAL(json, "{g:{x:{a:{b:c,e:f},q:{x:y}},y:fff}}");
+ }
+ }
+
+ Y_UNIT_TEST(TestMerge4) {
+ TStringBuf data = "{ a : 1, b : { c : 2, d : { q : f } } }";
+ NSc::TValue val = NSc::TValue::FromJson(data);
+
+ TStringBuf data1 = "{ a : 2, b : { c : 3, d : { q : e }, g : h } }";
+
+ val.MergeUpdateJson(data1);
+
+ {
+ TString json = val.ToJson(true);
+ SubstGlobal(json, "\"", "");
+
+ UNIT_ASSERT_VALUES_EQUAL(json, "{a:2,b:{c:3,d:{q:e},g:h}}");
+ }
+ }
+
+ Y_UNIT_TEST(TestMerge5) {
+ NSc::TValue v0;
+ v0.GetOrAdd("x").MergeUpdate(NSc::TValue(1));
+ UNIT_ASSERT_VALUES_EQUAL(v0.ToJson(), "{\"x\":1}");
+ }
+
+ Y_UNIT_TEST(TestMerge6) {
+ NSc::TValue va = NSc::TValue::FromJson("{\"x\":\"abc\",\"y\":\"def\"}");
+ NSc::TValue vb = va.Get("y");
+ NSc::TValue diff;
+ diff["y"] = vb;
+ va.MergeUpdate(diff);
+ UNIT_ASSERT_VALUES_EQUAL(va.ToJson(), "{\"x\":\"abc\",\"y\":\"def\"}");
+ UNIT_ASSERT_VALUES_EQUAL(vb.ToJson(), "\"def\"");
+ UNIT_ASSERT_VALUES_EQUAL(diff.ToJson(), "{\"y\":\"def\"}");
+ }
+
+ Y_UNIT_TEST(TestMerge7) {
+ 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::TValue a = v.TrySelectOrAdd("a")->MergeUpdateJson("[1,2,3]");
-
- UNIT_ASSERT_JSON_EQ_JSON(a, "[1,2,3]");
- UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[1,2,3]}");
- }
-};
+
+ UNIT_ASSERT_JSON_EQ_JSON(a, "[1,2,3]");
+ UNIT_ASSERT_JSON_EQ_JSON(v, "{a:[1,2,3]}");
+ }
+};