diff options
| author | kardymon-d <[email protected]> | 2026-05-19 03:23:26 +0300 |
|---|---|---|
| committer | kardymon-d <[email protected]> | 2026-05-19 03:40:08 +0300 |
| commit | ece7dc6b0ce38f4c52003721ab995d35bafe1b56 (patch) | |
| tree | ba15627c83a1dba9fcc0ddd9491de00058baf545 /library/cpp/containers | |
| parent | 15fba29e2027a8da95ecec25c95c0c59bfd3c32f (diff) | |
Fix disjoint tree build for i64
added i64 test
commit_hash:3fb3508267ad1008232631863d5e08abf6d1a397
Diffstat (limited to 'library/cpp/containers')
| -rw-r--r-- | library/cpp/containers/disjoint_interval_tree/disjoint_interval_tree.h | 3 | ||||
| -rw-r--r-- | library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/library/cpp/containers/disjoint_interval_tree/disjoint_interval_tree.h b/library/cpp/containers/disjoint_interval_tree/disjoint_interval_tree.h index f0c6644d4be..c5bfb659acb 100644 --- a/library/cpp/containers/disjoint_interval_tree/disjoint_interval_tree.h +++ b/library/cpp/containers/disjoint_interval_tree/disjoint_interval_tree.h @@ -115,7 +115,8 @@ public: if (containingBegin->first < begin && begin < containingBegin->second) { // Contains begin. if (containingBegin->second > end) { // Contains end. const T prevEnd = containingBegin->second; - Y_ASSERT(containingBegin->second - begin <= NumElements); + Y_ASSERT(containingBegin->second >= begin); + Y_ASSERT(static_cast<size_t>(containingBegin->second - begin) <= NumElements); Y_ASSERT(containingBegin->second - containingBegin->first > end - begin); containingBegin->second = begin; diff --git a/library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp b/library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp index 508a82459af..69278c31f73 100644 --- a/library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp +++ b/library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp @@ -288,4 +288,23 @@ Y_UNIT_TEST_SUITE(DisjointIntervalTreeTest) { UNIT_ASSERT(!tree.Intersects(15, 18)); } } + + Y_UNIT_TEST(TestI64) { + { + TDisjointIntervalTree<i64> tree; + tree.InsertInterval(-5, 10); + UNIT_ASSERT_VALUES_EQUAL(tree.EraseInterval(-2, 4), 6); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumIntervals(), 2); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumElements(), 9); + + UNIT_ASSERT_VALUES_EQUAL(tree.EraseInterval(-5, -2), 3); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumIntervals(), 1); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumElements(), 6); + + UNIT_ASSERT_VALUES_EQUAL(tree.EraseInterval(4, 10), 6); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumIntervals(), 0); + UNIT_ASSERT_VALUES_EQUAL(tree.GetNumElements(), 0); + UNIT_ASSERT(tree.Empty()); + } + } } |
