DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
TestFramework.c
См. документацию.
1enum TFR
2{
3 FAIL = -1,
6}
7
8class TFResult // Pretty much just to be able to keep a reference...
9{
11
12 void TFResult(TFR result)
13 {
14 Result = result;
15 }
16
18 {
19 if (Result == TFR.PENDING || other.Result == TFR.PENDING)
20 ErrorEx("Trying to And while one of the results are PENDING.");
21
22 if (Result == TFR.SUCCESS && other.Result == TFR.SUCCESS)
23 Result = TFR.SUCCESS;
24 else
25 Result = TFR.FAIL;
26
27 return this;
28 }
29
31 {
32 if (Result == TFR.PENDING || other.Result == TFR.PENDING)
33 ErrorEx("Trying to Or while one of the results are PENDING.");
34
35 if (Result == TFR.SUCCESS || other.Result == TFR.SUCCESS)
36 Result = TFR.SUCCESS;
37 else
38 Result = TFR.FAIL;
39
40 return this;
41 }
42}
44
45class TFCaller
46{
48 private string m_Test;
49 private ref TFResult m_Result;
50
51 void TFCaller(Class instance, string test, TFResult result)
52 {
53 m_Instance = instance;
54 m_Test = test;
55 m_Result = result;
56 }
57
58 TFResult Run(float dt)
59 {
60 bool callResult = GetGame().GameScript.CallFunction(m_Instance, m_Test, m_Result, dt);
61 if (!callResult)
62 {
63 ErrorEx(string.Format("Failed to call function \'%1\' on \'%2\'", m_Test, m_Instance.GetDebugName()));
64 m_Result.Result = TFR.FAIL;
65 }
66
67 return m_Result;
68 }
69
70 string GetTest()
71 {
72 return m_Test;
73 }
74
75 string GetTestEx()
76 {
77 return string.Format("%1::%2", m_Instance.ClassName(), m_Test);
78 }
79}
80typedef array<ref TFCaller> TFCallerArr;
81
83{
84 private int m_Count;
85 private int m_Failed;
86 private int m_Success;
87
88 private ref TFCallerArr m_Tests;
90
93
94 void TFModule()
95 {
96 m_Tests = {};
97 m_Results = {};
98
100 m_FailedTests = {};
101 }
102
103 int Count()
104 {
105 return m_Count;
106 }
107
108 int Failed()
109 {
110 return m_Failed;
111 }
112
114 {
115 return m_Success;
116 }
117
119 {
120 return m_Count - (m_Failed + m_Success);
121 }
122
123 void AddTest(Class instance, string test, bool repeat)
124 {
125 ++m_Count;
126
127 TFResult result = new TFResult(TFR.PENDING);
128 m_Results.Insert(result);
129
130 m_Tests.Insert(new TFCaller(instance, test, result));
131 }
132
133 bool Run(bool fatal, float dt)
134 {
135 array<TFCaller> done = new array<TFCaller>();
136
137 // Run the tests
138 int runningTests = m_Tests.Count();
139 for (int i = 0; i < runningTests; ++i)
140 {
141 TFCaller t = m_Tests[i];
142 if (RunTest(t, dt))
143 done.Insert(t);
144 }
145
146 // Remove finished tests
147 foreach (TFCaller doneT : done)
148 m_Tests.RemoveItem(doneT);
149
150 // Validate fatal
151 if (fatal && m_Tests.Count() > 0)
152 {
153 Print("- Active tests -------------------------");
154 foreach (TFCaller rTest : m_Tests)
155 Print(rTest.GetTest());
156 Print("----------------------------------------");
157
158 ErrorEx("Not all tests are done while run was fatal.");
159 m_Tests.Clear();
160 }
161
162 return m_Tests.Count() == 0;
163 }
164
165 private bool RunTest(TFCaller caller, float dt)
166 {
167 TFR res = caller.Run(dt).Result;
168
169 switch (res)
170 {
171 case TFR.FAIL:
172 ++m_Failed;
173 m_FailedTests.Insert(caller.GetTestEx());
174 break;
175 case TFR.SUCCESS:
176 ++m_Success;
177 m_SucceededTests.Insert(caller.GetTestEx());
178 break;
179 }
180
181 return res != TFR.PENDING;
182 }
183
184 string Result()
185 {
186 return string.Format("{ [TFModule] :: Tests: %1 | Success: %2 | Failed: %3 | Pending: %4 }", Count(), Success(), Failed(), Pending());
187 }
188
189 void PrintResult(string prefix = "", TestFramework caller = null, string function = "")
190 {
191 Debug.TFLog(string.Format("%1%2", prefix, Result()), caller, function);
192 if (m_SucceededTests.Count())
193 {
194 Debug.TFLog(" |-[SUCCESS]", caller, function);
195 foreach (string success : m_SucceededTests)
196 {
197 Debug.TFLog(string.Format(" |- %1", success), caller, function);
198 }
199 }
200 if (m_FailedTests.Count())
201 {
202 Debug.TFLog(" |-[FAILED]", caller, function);
203 foreach (string fail : m_FailedTests)
204 {
205 Debug.TFLog(string.Format(" |- %1", fail), caller, function);
206 }
207 }
208 }
209}
210
213{
216
218 {
219 SetEventMask(EntityEvent.INIT);
220 SetEventMask(EntityEvent.FRAME);
221
222 m_OnInitModule = new TFModule();
224 }
225
227 {
228 m_OnInitModule.PrintResult("IM: ", this, "~TestFrameWork");
229 m_OnFrameModule.PrintResult("FM: ", this, "~TestFrameWork");
230 }
231
232 //---------------------------------------------------------------------------
233 // Perform tests
234 //---------------------------------------------------------------------------
235 protected override void EOnInit(IEntity other, int extra)
236 {
237 m_OnInitModule.Run(true, 0);
238 }
239
240 protected override void EOnFrame(IEntity other, float timeSlice)
241 {
242 if (m_OnFrameModule.Run(false, timeSlice))
244 }
245
246 //---------------------------------------------------------------------------
247 // Add a test
248 //---------------------------------------------------------------------------
249 protected void AddInitTest(string test)
250 {
251 m_OnInitModule.AddTest(this, test, false);
252 }
253
254 protected void AddFrameTest(string test)
255 {
256 m_OnFrameModule.AddTest(this, test, true);
257 }
258
259 //---------------------------------------------------------------------------
260 // Asserts
261 //---------------------------------------------------------------------------
262 protected bool Assert(bool condition)
263 {
264 if (!condition)
265 ErrorEx("ASSERTION FAILED.");
266
267 return condition;
268 }
269
270 //---------------------------------------------------------------------------
271 // Helpers
272 //---------------------------------------------------------------------------
274 {
275 return new TFResult(result);
276 }
277
278 TFResult BTFR(bool result)
279 {
280 if (result)
281 return new TFResult(TFR.SUCCESS);
282 else
283 return new TFResult(TFR.FAIL);
284 }
285
287 {
288 return new TFResult(TFR.SUCCESS);
289 }
290}
@ SUCCESS
Определения Inventory.c:33
void ~TestFramework()
Определения TestFramework.c:226
void TestFramework()
Определения TestFramework.c:217
TFResult NTFR(TFR result)
Определения TestFramework.c:273
class TFModule m_OnInitModule
Test Framework.
TFResult CTFR()
Определения TestFramework.c:286
TFResult Or(TFResult other)
Определения TestFramework.c:30
bool Assert(bool condition)
Определения TestFramework.c:262
void TFResult(TFR result)
Определения TestFramework.c:12
TFR
Определения TestFramework.c:2
@ PENDING
Определения TestFramework.c:5
@ FAIL
Определения TestFramework.c:3
TFResult And(TFResult other)
Определения TestFramework.c:17
ref TFModule m_OnFrameModule
Определения TestFramework.c:215
void AddFrameTest(string test)
Определения TestFramework.c:254
void AddInitTest(string test)
Определения TestFramework.c:249
override void EOnInit(IEntity other, int extra)
Определения TestFramework.c:235
TFResult BTFR(bool result)
Определения TestFramework.c:278
enum TFR Result
override void EOnFrame(IEntity other, float timeSlice)
Определения TestFramework.c:240
array< ref TFResult > TFResultArr
Определения TestFramework.c:43
override ScriptCallQueue GetCallQueue(int call_category)
Определения DayZGame.c:1187
ScriptModule GameScript
Определения Game.c:12
Super root of all classes in Enforce script.
Определения EnScript.c:11
static void TFLog(string message=LOG_DEFAULT, TestFramework caller=null, string function="")
Определения Debug.c:177
Определения Debug.c:2
Определения EnEntity.c:165
proto void Call(func fn, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
adds call into the queue with given parameters and arguments (arguments are held in memory until the ...
int m_Failed
Определения TestFramework.c:85
int m_Count
Определения TestFramework.c:84
ref array< string > m_FailedTests
Определения TestFramework.c:92
ref array< string > m_SucceededTests
Определения TestFramework.c:91
int Failed()
Определения TestFramework.c:108
void TFModule()
Определения TestFramework.c:94
ref TFResultArr m_Results
Определения TestFramework.c:89
void PrintResult(string prefix="", TestFramework caller=null, string function="")
Определения TestFramework.c:189
string Result()
Определения TestFramework.c:184
ref TFCallerArr m_Tests
Определения TestFramework.c:88
bool RunTest(TFCaller caller, float dt)
Определения TestFramework.c:165
int m_Success
Определения TestFramework.c:86
int Success()
Определения TestFramework.c:113
int Count()
Определения TestFramework.c:103
void AddTest(Class instance, string test, bool repeat)
Определения TestFramework.c:123
bool Run(bool fatal, float dt)
Определения TestFramework.c:133
int Pending()
Определения TestFramework.c:118
Определения TestFramework.c:83
ref TFResult m_Result
Определения TestFramework.c:49
TFResult Run(float dt)
Определения TestFramework.c:58
Class m_Instance
Определения TestFramework.c:47
string GetTestEx()
Определения TestFramework.c:75
void TFCaller(Class instance, string test, TFResult result)
Определения TestFramework.c:51
string m_Test
Определения TestFramework.c:48
string GetTest()
Определения TestFramework.c:70
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.
enum ShapeType ErrorEx
proto volatile int CallFunction(Class inst, string function, out void returnVal, void parm)
EntityEvent
Entity events for event-mask, or throwing event from code.
Определения EnEntity.c:45
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.
const int CALL_CATEGORY_SYSTEM
Определения tools.c:8