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 | 5e9c70ee57e6237f8e2a9fd7f532d0d4f86d3c80 (patch) | |
| tree | 8b2d954a4dfbfaa977f9fd7da8299feaf231b82b /llvm/unittests/ADT/IntervalMapTest.cpp | |
| parent | 90e6f41f69e274abbc754b07751c76f7935ae7b0 (diff) | |
| download | llvm-5e9c70ee57e6237f8e2a9fd7f532d0d4f86d3c80.zip llvm-5e9c70ee57e6237f8e2a9fd7f532d0d4f86d3c80.tar.gz llvm-5e9c70ee57e6237f8e2a9fd7f532d0d4f86d3c80.tar.bz2 | |
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.
llvm-svn: 120171
Diffstat (limited to 'llvm/unittests/ADT/IntervalMapTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/IntervalMapTest.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/IntervalMapTest.cpp b/llvm/unittests/ADT/IntervalMapTest.cpp index d4b2f52..36476a4 100644 --- a/llvm/unittests/ADT/IntervalMapTest.cpp +++ b/llvm/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 |
