diff options
| author | denisostashov <[email protected]> | 2025-11-12 05:44:32 +0300 |
|---|---|---|
| committer | denisostashov <[email protected]> | 2025-11-12 06:02:49 +0300 |
| commit | 75c9feef6c4e47ecfaad0dd54be4fe610f541fb4 (patch) | |
| tree | b4ec05ea010a73b31d782976473bef6bbb114edf /library/cpp/scheme/tests/ut | |
| parent | fa3573678f6f3a6bc1425f13804af7cd114b93cf (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.cpp | 42 |
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"; |
