diff options
author | Gabe Black <gabeblack@google.com> | 2017-11-29 17:29:22 -0800 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-12-04 23:09:13 +0000 |
commit | b359faa73b199b4defa42983ba17068d66beaaca (patch) | |
tree | 24b78421a640d550bdbdb9c696812bad02b30640 /src/unittest | |
parent | 8c898cfaaa003e5635381f4b628a615726b5805a (diff) | |
download | gem5-b359faa73b199b4defa42983ba17068d66beaaca.tar.xz |
tests: Add a ptr helper function trietest.
This function casts an integer constant into a uint32_t * to make the
actual test lines a bit less verbose.
Change-Id: I9307dfd3d5861ddb9c0f6dcf4b28c846004f0a8d
Reviewed-on: https://gem5-review.googlesource.com/6222
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/unittest')
-rw-r--r-- | src/unittest/trietest.cc | 72 |
1 files changed, 40 insertions, 32 deletions
diff --git a/src/unittest/trietest.cc b/src/unittest/trietest.cc index ed8a772fa..7abef4ce1 100644 --- a/src/unittest/trietest.cc +++ b/src/unittest/trietest.cc @@ -28,7 +28,6 @@ * Authors: Gabe Black */ -#include <cassert> #include <iostream> #include "base/cprintf.hh" @@ -40,6 +39,15 @@ using UnitTest::setCase; typedef Trie<Addr, uint32_t> TestTrie; +namespace { + +static inline uint32_t *ptr(uintptr_t val) +{ + return (uint32_t *)val; +} + +} // anonymous namespace + int main() { @@ -50,78 +58,78 @@ main() cprintf("\n\n"); setCase("A single entry."); - trie1.insert(0x0123456789abcdef, 40, (uint32_t *)(uintptr_t)(1)); + trie1.insert(0x0123456789abcdef, 40, ptr(1)); trie1.dump("One entry"); cprintf("\n\n"); setCase("Two entries, one on the way to the other."); TestTrie trie2; - trie2.insert(0x0123456789abcdef, 40, (uint32_t *)(uintptr_t)(1)); - trie2.insert(0x0123456789abcdef, 36, (uint32_t *)(uintptr_t)(2)); + trie2.insert(0x0123456789abcdef, 40, ptr(1)); + trie2.insert(0x0123456789abcdef, 36, ptr(2)); trie2.dump("Two entries inline v1"); cprintf("\n\n"); TestTrie trie3; - trie3.insert(0x0123456789abcdef, 36, (uint32_t *)(uintptr_t)(2)); - trie3.insert(0x0123456789abcdef, 40, (uint32_t *)(uintptr_t)(1)); + trie3.insert(0x0123456789abcdef, 36, ptr(2)); + trie3.insert(0x0123456789abcdef, 40, ptr(1)); trie3.dump("Two entries inline v2"); cprintf("\n\n"); setCase("Two entries on different paths."); TestTrie trie4; - trie4.insert(0x0123456789abcdef, 40, (uint32_t *)(uintptr_t)(2)); - trie4.insert(0x0123456776543210, 40, (uint32_t *)(uintptr_t)(1)); + trie4.insert(0x0123456789abcdef, 40, ptr(2)); + trie4.insert(0x0123456776543210, 40, ptr(1)); trie4.dump("Two split entries"); cprintf("\n\n"); setCase("Skipping past an entry but not two."); TestTrie trie5; - trie5.insert(0x0123456789000000, 40, (uint32_t *)(uintptr_t)(4)); - trie5.insert(0x0123000000000000, 40, (uint32_t *)(uintptr_t)(1)); - trie5.insert(0x0123456780000000, 40, (uint32_t *)(uintptr_t)(3)); - trie5.insert(0x0123456700000000, 40, (uint32_t *)(uintptr_t)(2)); + trie5.insert(0x0123456789000000, 40, ptr(4)); + 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((uintptr_t)trie5.lookup(0x0123000000000000), 1); - EXPECT_EQ((uintptr_t)trie5.lookup(0x0123456700000000), 2); - EXPECT_EQ((uintptr_t)trie5.lookup(0x0123456780000000), 3); - EXPECT_EQ((uintptr_t)trie5.lookup(0x0123456789000000), 4); + EXPECT_EQ(trie5.lookup(0x0123000000000000), ptr(1)); + EXPECT_EQ(trie5.lookup(0x0123456700000000), ptr(2)); + EXPECT_EQ(trie5.lookup(0x0123456780000000), ptr(3)); + EXPECT_EQ(trie5.lookup(0x0123456789000000), ptr(4)); setCase("Removing entries."); TestTrie trie6; TestTrie::Handle node1, node2; - trie6.insert(0x0123456789000000, 40, (uint32_t *)(uintptr_t)(4)); - trie6.insert(0x0123000000000000, 40, (uint32_t *)(uintptr_t)(1)); - trie6.insert(0x0123456780000000, 40, (uint32_t *)(uintptr_t)(3)); - node1 = trie6.insert(0x0123456700000000, 40, (uint32_t *)(uintptr_t)(2)); - node2 = trie6.insert(0x0123456700000000, 32, (uint32_t *)(uintptr_t)(10)); + trie6.insert(0x0123456789000000, 40, ptr(4)); + trie6.insert(0x0123000000000000, 40, 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((uintptr_t)trie6.lookup(0x0123000000000000), 1); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456700000000), 10); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456780000000), 10); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456789000000), 10); + EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1)); + EXPECT_EQ(trie6.lookup(0x0123456700000000), ptr(10)); + EXPECT_EQ(trie6.lookup(0x0123456780000000), ptr(10)); + EXPECT_EQ(trie6.lookup(0x0123456789000000), ptr(10)); trie6.remove(node2); trie6.dump("One node removed"); cprintf("\n\n"); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123000000000000), 1); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456700000000), 2); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456780000000), 3); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456789000000), 4); + EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1)); + EXPECT_EQ(trie6.lookup(0x0123456700000000), ptr(2)); + EXPECT_EQ(trie6.lookup(0x0123456780000000), ptr(3)); + EXPECT_EQ(trie6.lookup(0x0123456789000000), ptr(4)); trie6.remove(node1); trie6.dump("Two nodes removed"); cprintf("\n\n"); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123000000000000), 1); + EXPECT_EQ(trie6.lookup(0x0123000000000000), ptr(1)); EXPECT_EQ(trie6.lookup(0x0123456700000000), NULL); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456780000000), 3); - EXPECT_EQ((uintptr_t)trie6.lookup(0x0123456789000000), 4); + EXPECT_EQ(trie6.lookup(0x0123456780000000), ptr(3)); + EXPECT_EQ(trie6.lookup(0x0123456789000000), ptr(4)); return UnitTest::printResults(); } |