Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
674 lines (513 loc) · 20.5 KB

File metadata and controls

674 lines (513 loc) · 20.5 KB
 
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
/*
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <SDL/SDL.h>
#include "../../include/SDL_test.h"
#include "../runner/logger.h"
#include "xml.h"
#include "logger_helpers.h"
#include "xml_logger.h"
/*! Static strings for XML elements */
const char *documentRoot = "testlog";
const char *parametersElementName = "parameters";
const char *parameterElementName = "parameter";
const char *startTimeElementName = "startTime";
const char *seedElementName = "seed";
const char *execKeyElementName = "executionKey";
const char *numSuitesElementName = "numSuites";
const char *numTestElementName = "numTests";
const char *numPassedTestsElementName = "numPassedTests";
const char *numFailedTestsElementName = "numFailedTests";
const char *numSkippedTestsElementName = "numSkippedTests";
const char *endTimeElementName = "endTime";
const char *totalRuntimeElementName = "totalRuntime";
const char *suiteElementName = "suite";
const char *testsPassedElementName = "testsPassed";
const char *testsFailedElementName = "testsFailed";
const char *testsSkippedElementName = "testsSkipped";
const char *testElementName = "test";
const char *nameElementName = "name";
const char *descriptionElementName = "description";
const char *resultElementName = "result";
const char *resultDescriptionElementName = "resultDescription";
const char *assertElementName = "assert";
const char *messageElementName = "message";
const char *timeElementName = "time";
const char *assertSummaryElementName = "assertSummary";
const char *assertCountElementName = "assertCount";
const char *assertsPassedElementName = "assertsPassed";
const char *assertsFailedElementName = "assertsFailed";
const char *logElementName = "log";
/*! Current indentationt level */
static int indentLevel;
/*! Logging level of the logger */
static Level level = LOGGER_TERSE;
//! Constants for XMLOuputters EOL parameter
#define YES 1
#define NO 0
/*! Controls printing the indentation in relation to line breaks */
static int prevEOL = YES;
//! Handle to log file
static FILE *logFile = NULL;
/*
* Prints out the given xml element etc.
*
* \todo Make the destination of the output changeable (defaults to stdout)
*
* \param currentIndentLevel the indent level of the message
* \param EOL will it print end of line character or not
* \param the XML element itself
*
*/
void
XMLOutputter(const int currentIndentLevel,
May 18, 2013
May 18, 2013
96
int EOL, const char *message)
May 18, 2013
May 18, 2013
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
if(ValidateString(message)) {
int indent = 0;
for( ; indent < currentIndentLevel && prevEOL; ++indent) {
fprintf(logFile, " "); // \todo make configurable?
}
prevEOL = EOL;
if(EOL) {
fprintf(logFile, "%s\n", message);
} else {
fprintf(logFile, "%s", message);
}
fflush(logFile);
} else {
fprintf(logFile, "Error: Tried to output invalid string!");
}
SDL_free((char *)message);
118
119
120
121
}
void
XMLRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
May 18, 2013
May 18, 2013
122
time_t eventTime, LoggerData *data)
May 18, 2013
May 18, 2013
124
125
126
127
128
129
130
131
132
133
// Set up the logging destination
if(data->stdoutEnabled) {
logFile = stdout;
} else {
logFile = fopen(data->filename, "w");
if(logFile == NULL) {
fprintf(stderr, "Log file %s couldn't opened\n", data->filename);
exit(3);
}
}
May 18, 2013
May 18, 2013
135
136
137
138
// Set up the style sheet
char *xslStylesheet = (char *)data->custom;
level = data->level;
//printf("Debug: %d == %d\n", level, data->level);
May 18, 2013
May 18, 2013
140
141
char *output = XMLOpenDocument(documentRoot, xslStylesheet);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
143
144
145
// log harness parameters
output = XMLOpenElement(parametersElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
147
148
149
int counter = 0;
for(counter = 0; counter < parameterCount; counter++) {
char *parameter = runnerParameters[counter];
May 18, 2013
May 18, 2013
151
152
output = XMLOpenElement(parameterElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
154
155
output = XMLAddContent(parameter);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
157
158
159
output = XMLCloseElement(parameterElementName);
XMLOutputter(--indentLevel, YES, output);
}
May 18, 2013
May 18, 2013
161
162
output = XMLCloseElement(parametersElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
164
165
166
// log seed
output = XMLOpenElement(seedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
168
169
output = XMLAddContent(runSeed);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
171
172
output = XMLCloseElement(seedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
174
175
176
// log start time
output = XMLOpenElement(startTimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
178
179
output = XMLAddContent(TimestampToString(eventTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
181
182
output = XMLCloseElement(startTimeElementName);
XMLOutputter(--indentLevel, YES, output);
183
184
185
186
}
void
XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
May 18, 2013
May 18, 2013
187
int testSkippedCount, time_t endTime, double totalRuntime)
May 18, 2013
May 18, 2013
189
190
191
// log suite count
char *output = XMLOpenElement(numSuitesElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
193
194
output = XMLAddContent(IntToString(suiteCount));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
196
197
output = XMLCloseElement(numSuitesElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
199
200
201
// log test count
output = XMLOpenElement(numTestElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
203
204
output = XMLAddContent(IntToString(testCount));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
206
207
output = XMLCloseElement(numTestElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
209
210
211
// log passed test count
output = XMLOpenElement(numPassedTestsElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
213
214
output = XMLAddContent(IntToString(testPassCount));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
216
217
output = XMLCloseElement(numPassedTestsElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
219
220
221
// log failed test count
output = XMLOpenElement(numFailedTestsElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
223
224
output = XMLAddContent(IntToString(testFailCount));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
226
227
output = XMLCloseElement(numFailedTestsElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
229
230
231
// log skipped test count
output = XMLOpenElement(numSkippedTestsElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
233
234
output = XMLAddContent(IntToString(testSkippedCount));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
236
237
output = XMLCloseElement(numSkippedTestsElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
239
240
241
// log end tite
output = XMLOpenElement(endTimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
243
244
output = XMLAddContent(TimestampToString(endTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
246
247
output = XMLCloseElement(endTimeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
249
250
251
// log total runtime
output = XMLOpenElement(totalRuntimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
253
254
output = XMLAddContent(DoubleToString(totalRuntime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
256
257
output = XMLCloseElement(totalRuntimeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
259
260
output = XMLCloseDocument(documentRoot);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
262
263
// close the log file
fclose(logFile);
264
265
266
267
268
}
void
XMLSuiteStarted(const char *suiteName, time_t eventTime)
{
May 18, 2013
May 18, 2013
269
270
271
// log suite name
char *output = XMLOpenElement(suiteElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
273
274
output = XMLOpenElement(nameElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
276
277
output = XMLAddContent(suiteName);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
279
280
281
// log test name
output = XMLCloseElement(nameElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
283
284
output = XMLOpenElement(startTimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
286
287
288
// log beginning time
output = XMLAddContent(TimestampToString(eventTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
290
291
output = XMLCloseElement(startTimeElementName);
XMLOutputter(--indentLevel, YES, output);
292
293
294
295
296
297
}
void
XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
time_t endTime, double totalRuntime)
{
May 18, 2013
May 18, 2013
298
299
300
// log tests passed
char *output = XMLOpenElement(testsPassedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
302
303
output = XMLAddContent(IntToString(testsPassed));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
305
306
output = XMLCloseElement(testsPassedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
308
309
310
// log tests failed
output = XMLOpenElement(testsFailedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
312
313
output = XMLAddContent(IntToString(testsFailed));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
315
316
output = XMLCloseElement(testsFailedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
318
319
320
// log tests skipped
output = XMLOpenElement(testsSkippedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
322
323
output = XMLAddContent(IntToString(testsSkipped));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
325
326
output = XMLCloseElement(testsSkippedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
328
329
330
// log tests skipped
output = XMLOpenElement(endTimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
332
333
output = XMLAddContent(TimestampToString(endTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
335
336
output = XMLCloseElement(endTimeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
338
339
340
// log total runtime
output = XMLOpenElement(totalRuntimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
342
343
output = XMLAddContent(DoubleToString(totalRuntime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
345
346
output = XMLCloseElement(totalRuntimeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
349
350
output = XMLCloseElement(suiteElementName);
XMLOutputter(--indentLevel, YES, output);
351
352
353
354
}
void
XMLTestStarted(const char *testName, const char *suiteName,
May 18, 2013
May 18, 2013
355
const char *testDescription, Uint64 execKey, time_t startTime)
May 18, 2013
May 18, 2013
357
358
char * output = XMLOpenElement(testElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
360
361
362
// log test name
output = XMLOpenElement(nameElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
364
365
output = XMLAddContent(testName);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
367
368
output = XMLCloseElement(nameElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
370
371
372
// log test description
output = XMLOpenElement(descriptionElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
374
375
output = XMLAddContent(testDescription);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
377
378
output = XMLCloseElement(descriptionElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
380
381
382
// log execution key
output = XMLOpenElement(execKeyElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
384
385
output = XMLAddContent(IntToHexString(execKey));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
387
388
output = XMLCloseElement(execKeyElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
390
391
392
// log start time
output = XMLOpenElement(startTimeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
394
395
output = XMLAddContent(TimestampToString(startTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
397
398
output = XMLCloseElement(startTimeElementName);
XMLOutputter(--indentLevel, YES, output);
399
400
401
402
403
404
}
void
XMLTestEnded(const char *testName, const char *suiteName,
int testResult, time_t endTime, double totalRuntime)
{
May 18, 2013
May 18, 2013
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
// Log test result
char *output = XMLOpenElement(resultElementName);
XMLOutputter(indentLevel++, NO, output);
switch(testResult) {
case TEST_RESULT_PASS:
output = XMLAddContent("passed");
break;
case TEST_RESULT_FAILURE:
output = XMLAddContent("failed");
break;
case TEST_RESULT_NO_ASSERT:
output = XMLAddContent("failed");
break;
case TEST_RESULT_SKIPPED:
output = XMLAddContent("skipped");
break;
case TEST_RESULT_KILLED:
output = XMLAddContent("failed");
break;
case TEST_RESULT_SETUP_FAILURE:
output = XMLAddContent("failed");
break;
}
XMLOutputter(indentLevel, NO, output);
output = XMLCloseElement(resultElementName);
XMLOutputter(--indentLevel, YES, output);
// Log description of test result. Why the test failed,
// if there's some specific reason
output = XMLOpenElement(resultDescriptionElementName);
XMLOutputter(indentLevel++, NO, output);
switch(testResult) {
case TEST_RESULT_PASS:
case TEST_RESULT_FAILURE:
case TEST_RESULT_SKIPPED:
output = XMLAddContent("");
break;
case TEST_RESULT_NO_ASSERT:
output = XMLAddContent("No assert");
break;
case TEST_RESULT_KILLED:
output = XMLAddContent("Timeout exceeded");
break;
case TEST_RESULT_SETUP_FAILURE:
output = XMLAddContent("Setup failure, couldn't be executed");
break;
}
XMLOutputter(indentLevel, NO, output);
output = XMLCloseElement(resultDescriptionElementName);
XMLOutputter(--indentLevel, YES, output);
// log total runtime
output = XMLOpenElement(endTimeElementName);
XMLOutputter(indentLevel++, NO, output);
output = XMLAddContent(TimestampToString(endTime));
XMLOutputter(indentLevel, NO, output);
output = XMLCloseElement(endTimeElementName);
XMLOutputter(--indentLevel, YES, output);
// log total runtime
output = XMLOpenElement(totalRuntimeElementName);
XMLOutputter(indentLevel++, NO, output);
output = XMLAddContent(DoubleToString(totalRuntime));
XMLOutputter(indentLevel, NO, output);
output = XMLCloseElement(totalRuntimeElementName);
XMLOutputter(--indentLevel, YES, output);
output = XMLCloseElement(testElementName);
XMLOutputter(--indentLevel, YES, output);
482
483
484
485
}
void
XMLAssert(const char *assertName, int assertResult, const char *assertMessage,
May 18, 2013
May 18, 2013
486
time_t eventTime)
May 18, 2013
May 18, 2013
488
489
490
491
// Log passed asserts only on VERBOSE level
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
return ;
}
May 18, 2013
May 18, 2013
493
494
char *output = XMLOpenElement(assertElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
496
497
498
// log assert name
output = XMLOpenElement(nameElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
500
501
output = XMLAddContent(assertName);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
503
504
output = XMLCloseElement(nameElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
507
508
509
// log assert result
output = XMLOpenElement(resultElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
511
512
output = XMLAddContent((assertResult) ? "pass" : "failure");
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
514
515
output = XMLCloseElement(resultElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
517
518
519
// log assert message
output = XMLOpenElement(messageElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
521
522
output = XMLAddContent(assertMessage);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
524
525
output = XMLCloseElement(messageElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
527
528
529
// log event time
output = XMLOpenElement(timeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
531
532
output = XMLAddContent(TimestampToString(eventTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
534
535
output = XMLCloseElement(timeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
537
538
output = XMLCloseElement(assertElementName);
XMLOutputter(--indentLevel, YES, output);
539
540
541
542
}
void
XMLAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
May 18, 2013
May 18, 2013
543
int actualValue, int excpected, time_t eventTime)
May 18, 2013
May 18, 2013
545
546
547
548
// Log passed asserts only on VERBOSE level
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
return ;
}
May 18, 2013
May 18, 2013
550
551
char *output = XMLOpenElement(assertElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
553
554
555
// log assert name
output = XMLOpenElement(nameElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
557
558
output = XMLAddContent(assertName);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
560
561
output = XMLCloseElement(nameElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
564
565
566
// log assert result
output = XMLOpenElement(resultElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
568
569
output = XMLAddContent((assertResult) ? "pass" : "failure");
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
571
572
output = XMLCloseElement(resultElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
574
575
576
// log assert message
output = XMLOpenElement(messageElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
578
579
output = XMLAddContent(assertMessage);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
581
582
output = XMLCloseElement(messageElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
584
585
586
// log event time
output = XMLOpenElement(timeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
588
589
output = XMLAddContent(TimestampToString(eventTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
591
592
output = XMLCloseElement(timeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
594
595
output = XMLCloseElement(assertElementName);
XMLOutputter(--indentLevel, YES, output);
596
597
598
599
}
void
XMLAssertSummary(int numAsserts, int numAssertsFailed,
May 18, 2013
May 18, 2013
600
int numAssertsPass, time_t eventTime)
May 18, 2013
May 18, 2013
602
603
char *output = XMLOpenElement(assertSummaryElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
605
606
output = XMLOpenElement(assertCountElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
608
609
output = XMLAddContent(IntToString(numAsserts));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
611
612
output = XMLCloseElement(assertCountElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
614
615
output = XMLOpenElement(assertsPassedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
617
618
output = XMLAddContent(IntToString(numAssertsPass));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
620
621
output = XMLCloseElement(assertsPassedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
623
624
output = XMLOpenElement(assertsFailedElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
626
627
output = XMLAddContent(IntToString(numAsserts));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
629
630
output = XMLCloseElement(assertsFailedElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
632
633
output = XMLCloseElement(assertSummaryElementName);
XMLOutputter(--indentLevel, YES, output);
634
635
636
637
638
}
void
XMLLog(time_t eventTime, char *fmt, ...)
{
May 18, 2013
May 18, 2013
639
640
641
642
// create the log message
va_list args;
char logMessage[1024];
memset(logMessage, 0, sizeof(logMessage));
May 18, 2013
May 18, 2013
644
645
646
va_start( args, fmt );
SDL_vsnprintf( logMessage, sizeof(logMessage), fmt, args );
va_end( args );
May 18, 2013
May 18, 2013
648
649
char *output = XMLOpenElement(logElementName);
XMLOutputter(indentLevel++, YES, output);
May 18, 2013
May 18, 2013
651
652
653
// log message
output = XMLOpenElement(messageElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
655
656
657
// fix this here!
output = XMLAddContent(logMessage);
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
659
660
output = XMLCloseElement(messageElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
662
663
664
// log eventTime
output = XMLOpenElement(timeElementName);
XMLOutputter(indentLevel++, NO, output);
May 18, 2013
May 18, 2013
666
667
output = XMLAddContent(TimestampToString(eventTime));
XMLOutputter(indentLevel, NO, output);
May 18, 2013
May 18, 2013
669
670
output = XMLCloseElement(timeElementName);
XMLOutputter(--indentLevel, YES, output);
May 18, 2013
May 18, 2013
672
673
output = XMLCloseElement(logElementName);
XMLOutputter(--indentLevel, YES, output);