diff options
author | innokentii <innokentii@yandex-team.com> | 2022-11-11 16:06:16 +0300 |
---|---|---|
committer | innokentii <innokentii@yandex-team.com> | 2022-11-11 16:06:16 +0300 |
commit | eb299967e503717d223751ed6a2f3c834429f60e (patch) | |
tree | 0b0396dcb7e8ba05351de1d63804d81982f36445 /library/cpp/actors/util/shared_data_ut.cpp | |
parent | 34d7ddb0a460e57587d80c1a118b87cfdc5460ad (diff) | |
download | ydb-eb299967e503717d223751ed6a2f3c834429f60e.tar.gz |
Add Detach to TSharedData
add Detach to TSharedData
Diffstat (limited to 'library/cpp/actors/util/shared_data_ut.cpp')
-rw-r--r-- | library/cpp/actors/util/shared_data_ut.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/library/cpp/actors/util/shared_data_ut.cpp b/library/cpp/actors/util/shared_data_ut.cpp index 8ed0df6866..0a510122b4 100644 --- a/library/cpp/actors/util/shared_data_ut.cpp +++ b/library/cpp/actors/util/shared_data_ut.cpp @@ -43,6 +43,12 @@ namespace NActors { UNIT_ASSERT_VALUES_EQUAL(TString(data.Slice(1, 3)), TString("ell")); UNIT_ASSERT_VALUES_EQUAL(TString(data.Slice(1, 100)), TString("ello")); UNIT_ASSERT_VALUES_EQUAL(TString(data.Slice(0, 4)), TString("Hell")); + + link = data; + UNIT_ASSERT(link.data() == data.data()); + UNIT_ASSERT_VALUES_UNEQUAL(link.Detach(), data.data()); + UNIT_ASSERT_EQUAL(data.size(), link.size()); + UNIT_ASSERT_VALUES_EQUAL(TString(data.Slice()), TString(link.Slice())); } Y_UNIT_TEST(TrimBehavior) { @@ -53,14 +59,14 @@ namespace NActors { // Trim to non-zero does not change addresses const char* ptr1 = data.data(); - data.Trim(31); + data.TrimBack(31); const char* ptr2 = data.data(); UNIT_ASSERT_VALUES_EQUAL(data.size(), 31u); UNIT_ASSERT(ptr1 == ptr2); // Trim to zero releases underlying data - data.Trim(0); + data.TrimBack(0); UNIT_ASSERT_VALUES_EQUAL(data.size(), 0u); UNIT_ASSERT(data.data() == nullptr); @@ -179,6 +185,18 @@ namespace NActors { UNIT_ASSERT(owner.NextDeallocated() == ptr); UNIT_ASSERT(owner.NextDeallocated() == nullptr); + + // Test Detach copies correctly and doesn't affect owned data + { + auto data = owner.Allocate(42); + auto disowned = data; + disowned.Detach(); + UNIT_ASSERT(owner.NextDeallocated() == nullptr); + } + + UNIT_ASSERT(owner.NextDeallocated() == ptr); + UNIT_ASSERT(owner.NextDeallocated() == nullptr); + } } |