/
GraphTreeHeap
/
museumdb2
Обзор
Документация
Войти
/
GraphTreeHeap
/
museumdb2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
util/interval_test.cc
102 строки
3 KB
Maciej Szeszko
Start development 11.4 (#14747)
18 май 2026, 23:35
18 май 2026, 23:35
4592363
Код
Авторство
О чём код?
// Copyright (c) Meta Platforms, Inc. and affiliates. // This source code is licensed under both the GPLv2 (found in the // COPYING file in the root directory) and Apache 2.0 License // (found in the LICENSE.Apache file in the root directory). #include "db/db_test_util.h" #include "rocksdb/data_structure.h" #include "rocksdb/slice.h" namespace ROCKSDB_NAMESPACE { class IntervalSetTest : public testing::Test {}; TEST_F(IntervalSetTest, BasicTest) { IntervalSet<int> set; set.insert({2, 15}); EXPECT_EQ(set.size(), 1); set.insert({5, 9}); EXPECT_EQ(set.size(), 1); set.insert({0, 10}); EXPECT_EQ(set.size(), 1); set.insert({25, 30}); EXPECT_EQ(set.size(), 2); set.insert({16, 25}); EXPECT_EQ(set.size(), 2); set.insert({45, 85}); ASSERT_EQ(set.size(), 3); auto iter = set.begin(); ASSERT_EQ(*iter, Interval<int>(0, 15)); iter++; ASSERT_EQ(*iter, Interval<int>(16, 30)); iter++; ASSERT_EQ(*iter, Interval<int>(45, 85)); set.insert({31}); iter = set.begin(); ASSERT_EQ(*iter, Interval<int>(0, 15)); iter++; ASSERT_EQ(*iter, Interval<int>(16, 30)); iter++; ASSERT_EQ(*iter, Interval<int>(31)); } TEST_F(IntervalSetTest, SliceTest) { IntervalSet<Slice, Comparator> set(BytewiseComparator()); EXPECT_TRUE(set.insert("k00", "k10")); // Should do nothing EXPECT_TRUE(set.insert("k02", "k08")); auto iter = set.begin(); ASSERT_EQ(iter->start().ToString(), "k00"); ASSERT_EQ(iter->end().ToString(), "k10"); ASSERT_EQ(set.size(), 1); iter++; ASSERT_EQ(iter, set.end()); EXPECT_TRUE(set.insert("k15", "k20")); EXPECT_TRUE(set.insert("k16")); ASSERT_EQ(set.size(), 2); iter = set.begin(); ASSERT_EQ(iter->start().ToString(), "k00"); ASSERT_EQ(iter->end().ToString(), "k10"); iter++; ASSERT_EQ(iter->start().ToString(), "k15"); ASSERT_EQ(iter->has_end(), false); // } TEST_F(IntervalSetTest, PropModeTest) { IntervalSet<Slice, Comparator> set(BytewiseComparator(), true); EXPECT_TRUE(set.insert("k00", "k10")); // Should do nothing EXPECT_FALSE(set.insert("k02", "k08")); EXPECT_EQ(set.size(), 1); EXPECT_TRUE(set.insert("k15", "k20")); EXPECT_EQ(set.size(), 2); EXPECT_FALSE(set.insert("k16")); ASSERT_EQ(set.size(), 2); auto iter = set.begin(); ASSERT_EQ(iter->start().ToString(), "k00"); ASSERT_EQ(iter->end().ToString(), "k10"); iter++; ASSERT_EQ(iter->start().ToString(), "k15"); ASSERT_EQ(iter->end().ToString(), "k20"); EXPECT_TRUE(set.insert("k12", "k14")); iter = set.begin(); ASSERT_EQ(set.size(), 3); ASSERT_EQ(iter->start().ToString(), "k00"); ASSERT_EQ(iter->end().ToString(), "k10"); iter++; ASSERT_EQ(iter->start().ToString(), "k12"); ASSERT_EQ(iter->end().ToString(), "k14"); iter++; ASSERT_EQ(iter->start().ToString(), "k15"); ASSERT_EQ(iter->end().ToString(), "k20"); } } // namespace ROCKSDB_NAMESPACE int main(int argc, char** argv) { ROCKSDB_NAMESPACE::port::InstallStackTraceHandler(); ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }