71#ifndef _GREENSOCS_GSUTILS_TESTS_TEST_BENCH_H
72#define _GREENSOCS_GSUTILS_TESTS_TEST_BENCH_H
76#include <gtest/gtest.h>
77#include <scp/report.h>
82 virtual void test_bench_body() = 0;
85 TestBench(
const sc_core::sc_module_name&
n): sc_core::sc_module(
n) {}
94 void SetUp()
override { instance =
new T(); }
95 void TearDown()
override {
delete instance; }
96 T* get() {
return instance; }
100#include <sys/types.h>
105static inline void run_test_bench(
T* instance)
107 sc_spawn(
sc_bind(&T::test_bench_body, instance));
114static inline void run_test_bench()
116 SCP_ERR(
"test_bench") <<
"Running tests on Windows is not supported.";
122#define TEST_BENCH_NAME(name) TestBench__##name
124#define TEST_BENCH(test_bench, name) \
125 class TEST_BENCH_NAME(name): public test_bench \
128 void test_bench_body() override; \
130 TEST_BENCH_NAME(name)(): test_bench(#name) {} \
132 testing::Environment* const test_bench_env##name = testing::AddGlobalTestEnvironment( \
133 new TestBenchEnv<TEST_BENCH_NAME(name)>()); \
134 TEST(TEST_BENCH_NAME(name), name) \
136 run_test_bench<TEST_BENCH_NAME(name)>( \
137 static_cast<TestBenchEnv<TEST_BENCH_NAME(name)>*>(test_bench_env##name)->get()); \
139 void TEST_BENCH_NAME(name)::test_bench_body()
Definition test-bench.h:89
Definition test-bench.h:80