#include <iostream>
-#include "base/cprintf.hh"
#include "base/trie.hh"
#include "base/types.hh"
#include "unittest/unittest.hh"
// Create an empty Ptr and verify it's data pointer is NULL.
setCase("An empty trie.");
TestTrie trie1;
- trie1.dump("Empty");
- cprintf("\n\n");
+ EXPECT_EQ(trie1.lookup(0x123456701234567), NULL);
setCase("A single entry.");
trie1.insert(0x0123456789abcdef, 40, ptr(1));
- trie1.dump("One entry");
- cprintf("\n\n");
+ EXPECT_EQ(trie1.lookup(0x123456701234567), NULL);
+ EXPECT_EQ(trie1.lookup(0x123456789ab0000), ptr(1));
setCase("Two entries, one on the way to the other.");
TestTrie trie2;
trie2.insert(0x0123456789abcdef, 40, ptr(1));
trie2.insert(0x0123456789abcdef, 36, ptr(2));
- trie2.dump("Two entries inline v1");
- cprintf("\n\n");
+ EXPECT_EQ(trie2.lookup(0x123456700000000), NULL);
+ EXPECT_EQ(trie2.lookup(0x123456789ab0000), ptr(2));
TestTrie trie3;
trie3.insert(0x0123456789abcdef, 36, ptr(2));
trie3.insert(0x0123456789abcdef, 40, ptr(1));
- trie3.dump("Two entries inline v2");
- cprintf("\n\n");
+ EXPECT_EQ(trie3.lookup(0x123456700000000), NULL);
+ EXPECT_EQ(trie3.lookup(0x123456789ab0000), ptr(2));
setCase("Two entries on different paths.");
TestTrie trie4;
trie4.insert(0x0123456789abcdef, 40, ptr(2));
trie4.insert(0x0123456776543210, 40, ptr(1));
- trie4.dump("Two split entries");
- cprintf("\n\n");
+ EXPECT_EQ(trie4.lookup(0x0123456789000000), ptr(2));
+ EXPECT_EQ(trie4.lookup(0x0123456776000000), ptr(1));
+ EXPECT_EQ(trie4.lookup(0x0123456700000000), NULL);
setCase("Skipping past an entry but not two.");
TestTrie trie5;
trie5.insert(0x0123000000000000, 40, ptr(1));
trie5.insert(0x0123456780000000, 40, ptr(3));
trie5.insert(0x0123456700000000, 40, ptr(2));
- trie5.dump("Complex insertion");
- cprintf("\n\n");
setCase("Looking things up.");
EXPECT_EQ(trie5.lookup(0x0123000000000000), ptr(1));
trie6.insert(0x0123456780000000, 40, ptr(3));
node1 = trie6.insert(0x0123456700000000, 40, ptr(2));
node2 = trie6.insert(0x0123456700000000, 32, ptr(10));
- trie6.dump("Fill before removal");
- cprintf("\n\n");
EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1));
EXPECT_EQ(trie6.lookup(0x0123456700000000), ptr(10));
EXPECT_EQ(trie6.lookup(0x0123456789000000), ptr(10));
trie6.remove(node2);
- trie6.dump("One node removed");
- cprintf("\n\n");
EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1));
EXPECT_EQ(trie6.lookup(0x0123456700000000), ptr(2));
EXPECT_EQ(trie6.lookup(0x0123456789000000), ptr(4));
trie6.remove(node1);
- trie6.dump("Two nodes removed");
- cprintf("\n\n");
EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1));
EXPECT_EQ(trie6.lookup(0x0123456700000000), NULL);