blob: 0aeae76f36e8f6a048250caf74b4580af97f0ffc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#pragma once
#include <gtest/gtest.h>
#include <mr_ctx.h>
/// ����������
class ModuleTestBase : public ::testing::TestWithParam<struct mr_module*>
{
protected:
struct mr_module * mod_desc_;
struct mr_global_ctx * g_ctx_;
struct mr_config * g_cfg_;
ModuleTestBase() :
mod_desc_(GetParam()), g_ctx_(NULL), g_cfg_(NULL)
{
return;
}
int call_preconfig() const
{
if (mod_desc_->preconfig != NULL) return (mod_desc_->preconfig)(g_cfg_, g_ctx_);
return 0;
}
int call_config() const
{
if (mod_desc_->config != NULL) return mod_desc_->config(g_cfg_, g_ctx_);
return 0;
}
int call_init() const
{
if (mod_desc_->init != NULL) return mod_desc_->init(g_cfg_, g_ctx_);
return 0;
}
int call_destory() const
{
if (mod_desc_->destory != NULL) return mod_desc_->init(g_cfg_, g_ctx_);
return 0;
}
void * module_g_ctx() const
{
return g_ctx_->module_ctxs[mod_desc_->mid];
}
void * module_g_cfg() const
{
return g_cfg_->module_cfgs[mod_desc_->mid];
}
};
/// ���Ի��࣬����ģ��PreConfig��ǰ�IJ���
class ModuelTestBaseBeforePreConfig : public ModuleTestBase
{
protected:
ModuelTestBaseBeforePreConfig() : ModuleTestBase()
{
return;
}
virtual void SetUp()
{
g_cfg_ = new struct mr_config();
g_ctx_ = new struct mr_global_ctx();
}
virtual void TearDown()
{
delete g_cfg_;
delete g_ctx_;
}
};
/// ���Ի��࣬����ģ��Config��ǰ�IJ���
class ModuleTestBaseBeforeConfig : public ModuelTestBaseBeforePreConfig
{
protected:
ModuleTestBaseBeforeConfig() : ModuelTestBaseBeforePreConfig() {}
virtual void SetUp()
{
ModuelTestBaseBeforePreConfig::SetUp();
ASSERT_EQ(call_preconfig(), 0);
}
};
/// ���Ի��࣬����ģ��Init��ǰ�IJ���
class ModuleTestBaseBeforeInit : public ModuleTestBaseBeforeConfig
{
protected:
ModuleTestBaseBeforeInit() : ModuleTestBaseBeforeConfig() {}
virtual void SetUp()
{
ModuleTestBaseBeforeConfig::SetUp();
ASSERT_EQ(call_config(), 0);
}
};
/// ���Ի��࣬����ģ��Init�κ�IJ���
class ModuleTestBaseAfterInit : public ModuleTestBaseBeforeInit
{
protected:
ModuleTestBaseAfterInit() : ModuleTestBaseBeforeInit() {}
virtual void SetUp()
{
ModuleTestBaseBeforeInit::SetUp();
ASSERT_EQ(call_init(), 0);
}
};
|