diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-26 06:54:20 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-11-26 06:54:20 +0000 |
commit | 53bb5c009b04f4a5dd2388b25efe88b5579b282c (patch) | |
tree | 6709e219666f07842bc241ce259ae3198d0667a3 /unittests/ADT/IntervalMapTest.cpp | |
parent | bf77baf19cfbc7a8795d9683e9b9ec894b9ff8c9 (diff) |
Add B+-tree test case that creates a height 3 tree with a smaller root node.
Change temporary debugging code to write a dot file directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120171 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ADT/IntervalMapTest.cpp')
-rw-r--r-- | unittests/ADT/IntervalMapTest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/unittests/ADT/IntervalMapTest.cpp b/unittests/ADT/IntervalMapTest.cpp index d4b2f52b50..36476a4cad 100644 --- a/unittests/ADT/IntervalMapTest.cpp +++ b/unittests/ADT/IntervalMapTest.cpp @@ -15,6 +15,7 @@ using namespace llvm; namespace { typedef IntervalMap<unsigned, unsigned> UUMap; +typedef IntervalMap<unsigned, unsigned, 4> UU4Map; // Empty map tests TEST(IntervalMapTest, EmptyMap) { @@ -373,4 +374,54 @@ TEST(IntervalMapTest, Branched) { EXPECT_TRUE(map.begin() == map.end()); } +// Branched, high, non-coalescing tests. +TEST(IntervalMapTest, Branched2) { + UU4Map::Allocator allocator; + UU4Map map(allocator); + + // Insert enough intervals to force a height >= 2 tree. + for (unsigned i = 1; i < 1000; ++i) + map.insert(10*i, 10*i+5, i); + + // Tree limits. + EXPECT_FALSE(map.empty()); + EXPECT_EQ(10u, map.start()); + EXPECT_EQ(9995u, map.stop()); + + // Tree lookup. + for (unsigned i = 1; i < 1000; ++i) { + EXPECT_EQ(0u, map.lookup(10*i-1)); + EXPECT_EQ(i, map.lookup(10*i)); + EXPECT_EQ(i, map.lookup(10*i+5)); + EXPECT_EQ(0u, map.lookup(10*i+6)); + } + + // Forward iteration. + UU4Map::iterator I = map.begin(); + for (unsigned i = 1; i < 1000; ++i) { + ASSERT_TRUE(I.valid()); + EXPECT_EQ(10*i, I.start()); + EXPECT_EQ(10*i+5, I.stop()); + EXPECT_EQ(i, *I); + ++I; + } + EXPECT_FALSE(I.valid()); + EXPECT_TRUE(I == map.end()); + + // Backwards iteration. + for (unsigned i = 999; i; --i) { + --I; + ASSERT_TRUE(I.valid()); + EXPECT_EQ(10*i, I.start()); + EXPECT_EQ(10*i+5, I.stop()); + EXPECT_EQ(i, *I); + } + EXPECT_TRUE(I == map.begin()); + + // Test clear() on branched map. + map.clear(); + EXPECT_TRUE(map.empty()); + EXPECT_TRUE(map.begin() == map.end()); +} + } // namespace |