Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/6222

Change subject: tests: Add a ptr helper function trietest.
......................................................................

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
---
M src/unittest/trietest.cc
1 file changed, 40 insertions(+), 32 deletions(-)



diff --git a/src/unittest/trietest.cc b/src/unittest/trietest.cc
index ed8a772..7abef4c 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 @@

 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 @@
     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();
 }

--
To view, visit https://gem5-review.googlesource.com/6222
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9307dfd3d5861ddb9c0f6dcf4b28c846004f0a8d
Gerrit-Change-Number: 6222
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to