summaryrefslogtreecommitdiffstats
path: root/library/cpp/containers
diff options
context:
space:
mode:
authorkardymon-d <[email protected]>2026-05-19 03:23:26 +0300
committerkardymon-d <[email protected]>2026-05-19 03:40:08 +0300
commitece7dc6b0ce38f4c52003721ab995d35bafe1b56 (patch)
treeba15627c83a1dba9fcc0ddd9491de00058baf545 /library/cpp/containers
parent15fba29e2027a8da95ecec25c95c0c59bfd3c32f (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.h3
-rw-r--r--library/cpp/containers/disjoint_interval_tree/ut/disjoint_interval_tree_ut.cpp19
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());
+ }
+ }
}