summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2024-03-08 13:59:18 +0100
committerTor Egge <Tor.Egge@online.no>2024-03-08 13:59:18 +0100
commit10592058d1af0ac22c8dff7b7a1cd893864f8544 (patch)
tree3aaf880b82a1f71b71bde37932e59ff72f5e81ca /vespalib
parent3ede5019a6fe0881917b165166f413c532fe4bc0 (diff)
Rewrite optimized unit test to gtest.
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/optimized/CMakeLists.txt1
-rw-r--r--vespalib/src/tests/optimized/optimized_test.cpp84
2 files changed, 34 insertions, 51 deletions
diff --git a/vespalib/src/tests/optimized/CMakeLists.txt b/vespalib/src/tests/optimized/CMakeLists.txt
index 0e7e85b6678..ce1c3a7cf67 100644
--- a/vespalib/src/tests/optimized/CMakeLists.txt
+++ b/vespalib/src/tests/optimized/CMakeLists.txt
@@ -4,5 +4,6 @@ vespa_add_executable(vespalib_optimized_test_app TEST
optimized_test.cpp
DEPENDS
vespalib
+ GTest::gtest
)
vespa_add_test(NAME vespalib_optimized_test_app COMMAND vespalib_optimized_test_app)
diff --git a/vespalib/src/tests/optimized/optimized_test.cpp b/vespalib/src/tests/optimized/optimized_test.cpp
index 9dffefeb012..ec14750f919 100644
--- a/vespalib/src/tests/optimized/optimized_test.cpp
+++ b/vespalib/src/tests/optimized/optimized_test.cpp
@@ -1,82 +1,64 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/testkit/testapp.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/vespalib/util/optimized.h>
using namespace vespalib;
-class Test : public vespalib::TestApp
+template <typename TestType>
+class OptimizedTest : public ::testing::Test
{
-private:
- template<typename T>
- void testMsbIdx();
- template<typename T>
- void testLsbIdx();
- template<typename T>
- void testPopCount();
-public:
- int Main() override;
+protected:
+ OptimizedTest();
+ ~OptimizedTest() override;
};
-template<typename T>
-void Test::testMsbIdx()
+template <typename TestType>
+OptimizedTest<TestType>::OptimizedTest() = default;
+template <typename TestType>
+OptimizedTest<TestType>::~OptimizedTest() = default;
+
+using OptimizedTestTypes = ::testing::Types<unsigned int, unsigned long, unsigned long long>;
+TYPED_TEST_SUITE(OptimizedTest, OptimizedTestTypes);
+
+TYPED_TEST(OptimizedTest, test_msb_idx)
{
- EXPECT_EQUAL(Optimized::msbIdx(T(0)), 0);
- EXPECT_EQUAL(Optimized::msbIdx(T(1)), 0);
- EXPECT_EQUAL(Optimized::msbIdx(T(-1)), int(sizeof(T)*8 - 1));
+ using T = TypeParam;
+ EXPECT_EQ(Optimized::msbIdx(T(0)), 0);
+ EXPECT_EQ(Optimized::msbIdx(T(1)), 0);
+ EXPECT_EQ(Optimized::msbIdx(T(-1)), int(sizeof(T)*8 - 1));
T v(static_cast<T>(-1));
for (size_t i(0); i < sizeof(T); i++) {
for (size_t j(0); j < 8; j++) {
- EXPECT_EQUAL(Optimized::msbIdx(v), int(sizeof(T)*8 - (i*8+j) - 1));
+ EXPECT_EQ(Optimized::msbIdx(v), int(sizeof(T)*8 - (i*8+j) - 1));
v = v >> 1;
}
}
}
-template<typename T>
-void Test::testLsbIdx()
+TYPED_TEST(OptimizedTest, test_lsb_idx)
{
- EXPECT_EQUAL(Optimized::lsbIdx(T(0)), 0);
- EXPECT_EQUAL(Optimized::lsbIdx(T(1)), 0);
- EXPECT_EQUAL(Optimized::lsbIdx(T(T(1)<<(sizeof(T)*8 - 1))), int(sizeof(T)*8 - 1));
- EXPECT_EQUAL(Optimized::lsbIdx(T(-1)), 0);
+ using T = TypeParam;
+ EXPECT_EQ(Optimized::lsbIdx(T(0)), 0);
+ EXPECT_EQ(Optimized::lsbIdx(T(1)), 0);
+ EXPECT_EQ(Optimized::lsbIdx(T(T(1)<<(sizeof(T)*8 - 1))), int(sizeof(T)*8 - 1));
+ EXPECT_EQ(Optimized::lsbIdx(T(-1)), 0);
T v(static_cast<T>(-1));
for (size_t i(0); i < sizeof(T); i++) {
for (size_t j(0); j < 8; j++) {
- EXPECT_EQUAL(Optimized::lsbIdx(v), int(i*8+j));
+ EXPECT_EQ(Optimized::lsbIdx(v), int(i*8+j));
v = v << 1;
}
}
}
-template<typename T>
-void Test::testPopCount()
+TYPED_TEST(OptimizedTest, test_pop_count)
{
- EXPECT_EQUAL(0, Optimized::popCount(T(0)));
- EXPECT_EQUAL(1, Optimized::popCount(T(1)));
- EXPECT_EQUAL(int(8 * sizeof(T)), Optimized::popCount(T(-1)));
+ using T = TypeParam;
+ EXPECT_EQ(0, Optimized::popCount(T(0)));
+ EXPECT_EQ(1, Optimized::popCount(T(1)));
+ EXPECT_EQ(int(8 * sizeof(T)), Optimized::popCount(T(-1)));
}
-int Test::Main()
-{
- TEST_INIT("optimized_test");
-
- testMsbIdx<unsigned int>();
- testMsbIdx<unsigned long>();
- testMsbIdx<unsigned long long>();
-
- TEST_FLUSH();
- testLsbIdx<unsigned int>();
- testLsbIdx<unsigned long>();
- testLsbIdx<unsigned long long>();
-
- TEST_FLUSH();
- testPopCount<unsigned int>();
- testPopCount<unsigned long>();
- testPopCount<unsigned long long>();
-
- TEST_FLUSH();
- TEST_DONE();
-}
+GTEST_MAIN_RUN_ALL_TESTS()
-TEST_APPHOOK(Test)