This repository has been archived by the owner on Feb 11, 2021. It is now read-only.
/
plain_logger.c
131 lines (109 loc) · 3.26 KB
1
2
3
4
5
6
#ifndef _PLAIN_LOGGER
#define _PLAIN_LOGGER
#include <stdio.h>
7
8
#include <SDL/SDL.h>
9
#include "logger_helpers.h"
10
11
#include "plain_logger.h"
12
13
static int indentLevel;
14
/*!
15
16
17
* Prints out the output of the logger
*
* \param message The message to be printed out
18
19
*/
int
20
Output(const int currentIdentLevel, const char *message, ...)
21
22
23
24
{
va_list list;
va_start(list, message);
25
26
27
28
29
int ident = 0;
for( ; ident < currentIdentLevel; ++ident) {
fprintf(stdout, " "); // \todo make configurable?
}
30
31
32
char buffer[1024];
SDL_vsnprintf(buffer, sizeof(buffer), message, list);
33
34
fprintf(stdout, "%s\n", buffer);
fflush(stdout);
35
}
36
37
void
38
39
PlainRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime,
void *data)
40
{
41
42
43
44
Output(indentLevel, "Test run started at %s", TimestampToString(eventTime));
Output(indentLevel, "");
/*
Output(indentLevel, "Runner: ");
45
46
47
48
int counter = 0;
for(counter = 0; counter < parameterCount; counter++) {
char *parameter = runnerParameters[counter];
49
Output(indentLevel, "\t%s", parameter);
50
51
}
*/
52
53
54
}
void
55
PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
56
time_t endTime, double totalRuntime)
57
{
58
Output(indentLevel, "Ran %d tests in %0.5f seconds from %d suites.",
59
testCount, totalRuntime, suiteCount);
60
61
62
Output(indentLevel, "%d tests passed", testPassCount);
Output(indentLevel, "%d tests failed", testFailCount);
63
64
65
66
67
}
void
PlainSuiteStarted(const char *suiteName, time_t eventTime)
{
68
Output(indentLevel++, "Executing tests from %s", suiteName);
69
70
71
72
}
void
PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
73
time_t endTime, double totalRuntime)
74
{
75
76
77
Output(--indentLevel, "Suite executed. %d passed, %d failed and %d skipped. Total runtime %0.5f seconds",
testsPassed, testsFailed, testsSkipped, totalRuntime);
Output(indentLevel, "");
78
79
80
}
void
81
PlainTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
82
{
83
Output(indentLevel++, "Executing test: %s (in %s)", testName, suiteName);
84
85
86
}
void
87
PlainTestEnded(const char *testName, const char *suiteName,
88
int testResult, time_t endTime, double totalRuntime)
89
{
90
91
if(testResult) {
if(testResult == 2) {
92
Output(--indentLevel, "%s: failed -> no assert", testName);
93
} else {
94
Output(--indentLevel, "%s: failed", testName);
95
96
}
} else {
97
Output(--indentLevel, "%s: ok", testName);
98
}
99
100
101
102
}
void
PlainAssert(const char *assertName, int assertResult, const char *assertMessage,
103
104
105
time_t eventTime)
{
const char *result = (assertResult) ? "passed" : "failed";
106
Output(indentLevel, "%s: %s", assertName, assertMessage);
107
108
109
110
}
void
PlainAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
111
int actualValue, int expected, time_t eventTime)
112
113
{
const char *result = (assertResult) ? "passed" : "failed";
114
115
Output(indentLevel, "%s %d (expected %d, actualValue &d): %s",
assertName, assertResult, expected, actualValue, assertMessage);
116
117
118
}
void
119
PlainAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass, time_t eventTime)
120
{
121
Output(indentLevel, "Assert summary: %d failed, %d passed (total: %d)",
122
numAssertsFailed, numAssertsPass, numAsserts);
123
124
125
126
127
}
void
PlainLog(const char *logMessage, time_t eventTime)
{
128
Output(indentLevel, "%s %d", logMessage, eventTime);
129
130
131
}
#endif