summaryrefslogtreecommitdiffstats
path: root/library/cpp/scheme/tests/ut
diff options
context:
space:
mode:
authordenisostashov <[email protected]>2025-11-12 05:44:32 +0300
committerdenisostashov <[email protected]>2025-11-12 06:02:49 +0300
commit75c9feef6c4e47ecfaad0dd54be4fe610f541fb4 (patch)
treeb4ec05ea010a73b31d782976473bef6bbb114edf /library/cpp/scheme/tests/ut
parentfa3573678f6f3a6bc1425f13804af7cd114b93cf (diff)
[library/cpp/scheme] Add const GetNoAdd methods, move return value in Delete method
[library/cpp/scheme] Add const GetNoAdd methods, move return value in Delete method commit_hash:94e4b516948789e0092e2d88f2e3d1079da2b99a
Diffstat (limited to 'library/cpp/scheme/tests/ut')
-rw-r--r--library/cpp/scheme/tests/ut/scheme_ut.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/library/cpp/scheme/tests/ut/scheme_ut.cpp b/library/cpp/scheme/tests/ut/scheme_ut.cpp
index 182f65fac71..97cd4524354 100644
--- a/library/cpp/scheme/tests/ut/scheme_ut.cpp
+++ b/library/cpp/scheme/tests/ut/scheme_ut.cpp
@@ -877,6 +877,48 @@ Y_UNIT_TEST_SUITE(TSchemeTest) {
UNIT_ASSERT_VALUES_EQUAL(v, expectedResult);
}
+ Y_UNIT_TEST(TestConstGetNoAdd) {
+ NSc::TValue v = NSc::NUt::AssertFromJson("{a:[null,-1,2,3.4],b:3,c:{d:5,x:y}}");
+ UNIT_ASSERT(v.GetNoAdd("a") != nullptr);
+ UNIT_ASSERT(v.GetNoAdd("b") != nullptr);
+ UNIT_ASSERT(v.GetNoAdd("c") != nullptr);
+ UNIT_ASSERT(v.GetNoAdd("d") == nullptr);
+ UNIT_ASSERT(v.GetNoAdd("value") == nullptr);
+ {
+ const NSc::TValue* childPtr = v.GetNoAdd("c");
+ UNIT_ASSERT(childPtr != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd("d") != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd("x") != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd("e") == nullptr);
+ NSc::TValue child = *childPtr;
+ child["e"]["f"] = 42;
+ UNIT_ASSERT(child.GetNoAdd("e") != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd("e") == nullptr);
+ UNIT_ASSERT_VALUES_EQUAL(child.Delete("x"), NSc::NUt::AssertFromJson("y"));
+ UNIT_ASSERT_VALUES_EQUAL(v, NSc::NUt::AssertFromJson("{a:[null,-1,2,3.4],b:3,c:{d:5,x:y}}"));
+ UNIT_ASSERT_VALUES_EQUAL(child, NSc::NUt::AssertFromJson("{d:5,e:{f:42}}"));
+ }
+ {
+ const NSc::TValue* childPtr = v.GetNoAdd("a");
+ UNIT_ASSERT(childPtr != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(0) != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(1) != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(2) != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(3) != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(4) == nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(5) == nullptr);
+ NSc::TValue child = *childPtr;
+ child.Push("y");
+ child.Push("z");
+ child[2] = 5;
+ UNIT_ASSERT_VALUES_EQUAL(child.Delete(1), NSc::NUt::AssertFromJson("-1"));
+ UNIT_ASSERT(child.GetNoAdd(4) != nullptr);
+ UNIT_ASSERT(childPtr->GetNoAdd(4) == nullptr);
+ UNIT_ASSERT_VALUES_EQUAL(v, NSc::NUt::AssertFromJson("{a:[null,-1,2,3.4],b:3,c:{d:5,x:y}}"));
+ UNIT_ASSERT_VALUES_EQUAL(child, NSc::NUt::AssertFromJson("[null,5,3.4,y,z]"));
+ }
+ }
+
Y_UNIT_TEST(TestNewNodeOnCurrentPool) {
NSc::TValue parent;
parent["foo"] = "bar";