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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
#include <stdlib.h>
#include "base/LinkedList.h"
#include "unit/TestRunner.h"
extern TestSuite addAudioClockTests(void);
extern TestSuite addAudioSettingsTests(void);
extern TestSuite addCharStringTests(void);
extern TestSuite addEndianTests(void);
extern TestSuite addFileTests(void);
extern TestSuite addLinkedListTests(void);
extern TestSuite addMidiSequenceTests(void);
extern TestSuite addMidiSourceTests(void);
extern TestSuite addPlatformInfoTests(void);
extern TestSuite addPluginTests(void);
extern TestSuite addPluginChainTests(void);
extern TestSuite addPluginPresetTests(void);
extern TestSuite addPluginVst2xIdTests(void);
extern TestSuite addProgramOptionTests(void);
extern TestSuite addSampleBufferTests(void);
extern TestSuite addSampleSourceTests(void);
extern TestSuite addTaskTimerTests(void);
extern TestSuite addAnalysisClippingTests(void);
extern TestSuite addAnalysisDistortionTests(void);
extern TestSuite addAnalysisSilenceTests(void);
extern void _printTestSummary(int testsRun, int testsPassed, int testsFailed, int testsSkipped);
static void _sumTestSuiteResults(void *item, void *extraData)
{
TestSuite testSuite = (TestSuite)item;
TestSuite result = (TestSuite)extraData;
result->numSuccess += testSuite->numSuccess;
result->numFail += testSuite->numFail;
result->numSkips += testSuite->numSkips;
}
LinkedList getTestSuites(void);
LinkedList getTestSuites(void)
{
LinkedList unitTestSuites = newLinkedList();
linkedListAppend(unitTestSuites, addAudioClockTests());
linkedListAppend(unitTestSuites, addAudioSettingsTests());
linkedListAppend(unitTestSuites, addCharStringTests());
linkedListAppend(unitTestSuites, addEndianTests());
linkedListAppend(unitTestSuites, addFileTests());
linkedListAppend(unitTestSuites, addLinkedListTests());
linkedListAppend(unitTestSuites, addMidiSequenceTests());
linkedListAppend(unitTestSuites, addMidiSourceTests());
linkedListAppend(unitTestSuites, addPlatformInfoTests());
linkedListAppend(unitTestSuites, addPluginTests());
linkedListAppend(unitTestSuites, addPluginChainTests());
linkedListAppend(unitTestSuites, addPluginPresetTests());
linkedListAppend(unitTestSuites, addPluginVst2xIdTests());
linkedListAppend(unitTestSuites, addProgramOptionTests());
linkedListAppend(unitTestSuites, addSampleBufferTests());
linkedListAppend(unitTestSuites, addSampleSourceTests());
linkedListAppend(unitTestSuites, addTaskTimerTests());
linkedListAppend(unitTestSuites, addAnalysisClippingTests());
linkedListAppend(unitTestSuites, addAnalysisDistortionTests());
linkedListAppend(unitTestSuites, addAnalysisSilenceTests());
return unitTestSuites;
}
static void _setTestSuiteOnlyPrintFailing(void *item, void *userData)
{
TestSuite testSuite = (TestSuite)item;
testSuite->onlyPrintFailing = true;
}
TestSuite runUnitTests(LinkedList testSuites, boolByte onlyPrintFailing);
TestSuite runUnitTests(LinkedList testSuites, boolByte onlyPrintFailing)
{
TestSuite suiteResults;
if (onlyPrintFailing) {
linkedListForeach(testSuites, _setTestSuiteOnlyPrintFailing, NULL);
}
linkedListForeach(testSuites, runTestSuite, NULL);
// Create a new test suite to be used as the userData passed to the foreach loop
suiteResults = newTestSuite("Suite results", NULL, NULL);
linkedListForeach(testSuites, _sumTestSuiteResults, suiteResults);
_printTestSummary(suiteResults->numSuccess + suiteResults->numFail + suiteResults->numSkips,
suiteResults->numSuccess, suiteResults->numFail, suiteResults->numSkips);
return suiteResults;
}
TestCase findTestCase(TestSuite testSuite, char *testName);
TestCase findTestCase(TestSuite testSuite, char *testName)
{
LinkedList iterator = testSuite->testCases;
TestCase currentTestCase = NULL;
while (iterator != NULL) {
if (iterator->item != NULL) {
currentTestCase = (TestCase)iterator->item;
if (!strncasecmp(currentTestCase->name, testName, strlen(currentTestCase->name))) {
return currentTestCase;
}
}
iterator = iterator->nextItem;
}
return NULL;
}
TestSuite findTestSuite(LinkedList testSuites, const CharString testSuiteName);
TestSuite findTestSuite(LinkedList testSuites, const CharString testSuiteName)
{
LinkedList iterator = testSuites;
TestSuite testSuite = NULL;
if (testSuiteName == NULL || charStringIsEmpty(testSuiteName)) {
return NULL;
}
while (iterator != NULL) {
if (iterator->item != NULL) {
testSuite = (TestSuite)iterator->item;
if (charStringIsEqualToCString(testSuiteName, testSuite->name, true)) {
break;
} else {
testSuite = NULL;
}
}
iterator = iterator->nextItem;
}
return testSuite;
}
static void _printTestCases(void *item, void *userData)
{
TestCase testCase = (TestCase)item;
char *testSuiteName = (char *)userData;
printf("%s:%s\n", testSuiteName, testCase->name);
}
static void _printTestsInSuite(void *item, void *userData)
{
TestSuite testSuite = (TestSuite)item;
linkedListForeach(testSuite->testCases, _printTestCases, testSuite->name);
}
void printUnitTestSuites(void);
void printUnitTestSuites(void)
{
LinkedList unitTestSuites = getTestSuites();
linkedListForeach(unitTestSuites, _printTestsInSuite, NULL);
freeLinkedListAndItems(unitTestSuites, (LinkedListFreeItemFunc)freeTestSuite);
}
|