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>
106static inline void run_test_bench(
T* instance)
108 sc_spawn(
sc_bind(&T::test_bench_body, instance));
112#define TEST_BENCH_NAME(name) TestBench__##name
114#define TEST_BENCH(test_bench, name) \
115 class TEST_BENCH_NAME(name): public test_bench \
118 void test_bench_body() override; \
120 TEST_BENCH_NAME(name)(): test_bench(#name) {} \
122 testing::Environment* const test_bench_env##name = testing::AddGlobalTestEnvironment( \
123 new TestBenchEnv<TEST_BENCH_NAME(name)>()); \
124 TEST(TEST_BENCH_NAME(name), name) \
126 run_test_bench<TEST_BENCH_NAME(name)>( \
127 static_cast<TestBenchEnv<TEST_BENCH_NAME(name)>*>(test_bench_env##name)->get()); \
129 void TEST_BENCH_NAME(name)::test_bench_body()
Definition test-bench.h:89
Definition test-bench.h:80