LkEngine 0.1.2
 
Loading...
Searching...
No Matches
TestMacros.h
1/******************************************************************
2 * TestMacros
3 *
4/*****************************************************************/
5#pragma once
6
8#include <LkEngine/Core/Assert.h>
9#include <LkEngine/Core/Log/Log.h>
10
11#define LK_TEST_SUITE_ALL ::LkEngine::Test::ETestSuite::All
12#define LK_TEST_SUITE_CORE ::LkEngine::Test::ETestSuite::Core
13
14namespace LkEngine::Test
15{
16 enum class ETestSuite
17 {
18 Unknown,
19 All,
20 Core,
21 COUNT
22 };
23}
24
25namespace LkEngine::Enum
26{
27 static constexpr const char* ToString(const ::LkEngine::Test::ETestSuite TestSuite)
28 {
29 using namespace LkEngine::Test;
30 switch (TestSuite)
31 {
32 case ETestSuite::Unknown: return "Unknown";
33 case ETestSuite::All: return "All";
34 case ETestSuite::Core: return "Core";
35 case ETestSuite::COUNT: return "COUNT";
36 }
37 return "NULL";
38 }
39}
40
41
47#define LK_DECLARE_AUTOMATION_TEST(TestClass, ...) \
48 class TestClass : public ::LkEngine::Test::LAutomationTest \
49 { \
50 public: \
51 TestClass(); \
52 virtual bool RunTest() override; \
53 virtual ::LkEngine::Test::ETestSuite GetTestSuite() const override \
54 { \
55 using namespace ::LkEngine::Test; \
56 return __VA_OPT__(static_cast<ETestSuite>(__VA_ARGS__)) __VA_OPT__(;) ETestSuite::Unknown; \
57 } \
58 private: \
59 LCLASS(TestClass); \
60 }; \
61 namespace \
62 { \
63 struct TestClass##_Register \
64 { \
65 TestClass##_Register() \
66 { \
67 using namespace ::LkEngine::Test; \
68 ::LkEngine::LTestManager::Get().AddToSuite( \
69 __VA_OPT__(static_cast<::LkEngine::Test::ETestSuite>(__VA_ARGS__)) \
70 __VA_OPT__(,) \
71 []() { return std::make_shared<TestClass>(); }); \
72 } \
73 }; \
74 static TestClass##_Register TestClass##_Instance; \
75 }
76
77
88#define LK_DEFINE_AUTOMATION_TEST(TestClass, ...) \
89 TestClass::TestClass() \
90 : ::LkEngine::Test::LAutomationTest(#TestClass) \
91 { \
92 LOBJECT_REGISTER(); \
93 } \
94 bool TestClass::RunTest()
95
96
Core macros used by the entire engine.