summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2018-10-24 11:50:03 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2018-10-26 09:14:34 +0000
commit78addea341e1c96dc95e178436d9749267781f71 (patch)
tree24a651a4216a6d08810422af964647050cbf706c
parent0330c434e211c9b16402f4f0e76110a8524ca143 (diff)
downloadgem5-78addea341e1c96dc95e178436d9749267781f71.tar.xz
tests: Convert CircleBuf unit test to a GTest
Change-Id: I028c6b8d8e0ec06cac3d636689ae647f717096cd Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/13735 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
-rw-r--r--src/base/SConscript1
-rw-r--r--src/base/circlebuftest.cc (renamed from src/unittest/circlebuf.cc)129
-rw-r--r--src/unittest/SConscript1
3 files changed, 65 insertions, 66 deletions
diff --git a/src/base/SConscript b/src/base/SConscript
index 3065749ba..3570d1574 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -84,6 +84,7 @@ Source('stats/text.cc')
GTest('addr_range_test', 'addr_range_test.cc')
GTest('bituniontest', 'bituniontest.cc')
+GTest('CircleBufTest', 'circlebuftest.cc')
DebugFlag('Annotate', "State machine annotation debugging")
DebugFlag('AnnotateQ', "State machine annotation queue debugging")
diff --git a/src/unittest/circlebuf.cc b/src/base/circlebuftest.cc
index 13f8f701e..9f5679d84 100644
--- a/src/unittest/circlebuf.cc
+++ b/src/base/circlebuftest.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015 ARM Limited
+ * Copyright (c) 2015, 2018 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -37,85 +37,84 @@
* Authors: Andreas Sandberg
*/
+#include <gtest/gtest.h>
+
#include "base/circlebuf.hh"
-#include "unittest/unittest.hh"
const char data[] = {
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,
0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf,
};
-int
-main(int argc, char *argv[])
+// Basic non-overflow functionality
+TEST(CircleBufTest, BasicReadWriteNoOverflow)
{
- UnitTest::setCase("Basic non-overflow functionality");
- {
- CircleBuf<char> buf(8);
- char foo[16];
-
- // Write empty buffer, no overflow
- buf.write(data, 8);
- EXPECT_EQ(buf.size(), 8);
- buf.peek(foo, 8);
- EXPECT_EQ(memcmp(foo, data, 8), 0);
+ CircleBuf<char> buf(8);
+ char foo[16];
- // Read 2
- buf.read(foo, 2);
- EXPECT_EQ(memcmp(foo, data, 2), 0);
- EXPECT_EQ(buf.size(), 6);
- buf.read(foo, 6);
- EXPECT_EQ(memcmp(foo, data + 2, 6), 0);
- EXPECT_EQ(buf.size(), 0);
- }
+ // Write empty buffer, no overflow
+ buf.write(data, 8);
+ EXPECT_EQ(buf.size(), 8);
+ buf.peek(foo, 8);
+ EXPECT_EQ(memcmp(foo, data, 8), 0);
- UnitTest::setCase("Basic single write overflow functionality");
- {
- CircleBuf<char> buf(8);
- char foo[16];
+ // Read 2
+ buf.read(foo, 2);
+ EXPECT_EQ(memcmp(foo, data, 2), 0);
+ EXPECT_EQ(buf.size(), 6);
+ buf.read(foo, 6);
+ EXPECT_EQ(memcmp(foo, data + 2, 6), 0);
+ EXPECT_EQ(buf.size(), 0);
+}
- buf.write(data, 16);
- EXPECT_EQ(buf.size(), 8);
- buf.peek(foo, 8);
- EXPECT_EQ(memcmp(data + 8, foo, 8), 0);
- }
+// Basic single write overflow functionality
+TEST(CircleBufTest, SingleWriteOverflow)
+{
+ CircleBuf<char> buf(8);
+ char foo[16];
+ buf.write(data, 16);
+ EXPECT_EQ(buf.size(), 8);
+ buf.peek(foo, 8);
+ EXPECT_EQ(memcmp(data + 8, foo, 8), 0);
+}
- UnitTest::setCase("Multi-write overflow functionality");
- {
- CircleBuf<char> buf(8);
- char foo[16];
- // Write, no overflow, write overflow
- buf.write(data, 6);
- buf.write(data + 8, 6);
- EXPECT_EQ(buf.size(), 8);
- buf.peek(foo, 8);
- EXPECT_EQ(memcmp(data + 4, foo, 2), 0);
- EXPECT_EQ(memcmp(data + 8, foo + 2, 6), 0);
- }
+// Multi-write overflow functionality
+TEST(CircleBufTest, MultiWriteOverflow)
+{
+ CircleBuf<char> buf(8);
+ char foo[16];
- UnitTest::setCase("Pointer wrap around");
- {
- CircleBuf<char> buf(8);
- char foo[16];
+ // Write, no overflow, write overflow
+ buf.write(data, 6);
+ buf.write(data + 8, 6);
+ EXPECT_EQ(buf.size(), 8);
+ buf.peek(foo, 8);
+ EXPECT_EQ(memcmp(data + 4, foo, 2), 0);
+ EXPECT_EQ(memcmp(data + 8, foo + 2, 6), 0);
+}
- // _start == 0, _stop = 8
- buf.write(data, 8);
- // _start == 4, _stop = 8
- buf.read(foo, 4);
- // _start == 4, _stop = 12
- buf.write(data + 8, 4);
- EXPECT_EQ(buf.size(), 8);
- // _start == 10, _stop = 12
- // Normalized: _start == 2, _stop = 4
- buf.read(foo + 4, 6);
- EXPECT_EQ(buf.size(), 2);
- EXPECT_EQ(memcmp(data, foo, 10), 0);
- // Normalized: _start == 4, _stop = 4
- buf.read(foo + 10, 2);
- EXPECT_EQ(buf.size(), 0);
- EXPECT_EQ(memcmp(data, foo, 12), 0);
- }
+// Pointer wrap around
+TEST(CircleBufTest, PointerWrapAround)
+{
+ CircleBuf<char> buf(8);
+ char foo[16];
- return UnitTest::printResults();
+ // _start == 0, _stop = 8
+ buf.write(data, 8);
+ // _start == 4, _stop = 8
+ buf.read(foo, 4);
+ // _start == 4, _stop = 12
+ buf.write(data + 8, 4);
+ EXPECT_EQ(buf.size(), 8);
+ // _start == 10, _stop = 12
+ // Normalized: _start == 2, _stop = 4
+ buf.read(foo + 4, 6);
+ EXPECT_EQ(buf.size(), 2);
+ EXPECT_EQ(memcmp(data, foo, 10), 0);
+ // Normalized: _start == 4, _stop = 4
+ buf.read(foo + 10, 2);
+ EXPECT_EQ(buf.size(), 0);
+ EXPECT_EQ(memcmp(data, foo, 12), 0);
}
diff --git a/src/unittest/SConscript b/src/unittest/SConscript
index 752db1f68..b104932ba 100644
--- a/src/unittest/SConscript
+++ b/src/unittest/SConscript
@@ -32,7 +32,6 @@ Import('*')
Source('unittest.cc')
-UnitTest('circlebuf', 'circlebuf.cc')
UnitTest('cprintftime', 'cprintftime.cc')
UnitTest('initest', 'initest.cc')
UnitTest('nmtest', 'nmtest.cc')