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
|
/* keep this include at the very top of the file */
#include "../src/simple-test.h"
/* any global variables, functions, other inclusions, etc.
* should be declared here */
#include "header_with_stuff_to_be_tested.h"
int add_here(int a, int b)
{
/* ASSERT / ECHO statements within functions
* like this are perfectly valid. this is
* useful for writing initialisation functions
* called at the beginning of multiple TESTs */
ECHO("this is the local add");
/* ensure a and b are non-0 using generic ASSERT */
ASSERT(a);
ASSERT(b);
return a + b;
}
/* must come before all TESTs */
BEGIN_TEST
/* the string is a description of the test being run */
TEST("check add()'s return value")
{
/* mixing different precisions is allowed */
long var1 = 2;
int8_t var2 = 2;
/* add is a function included from our hypothetical
* header_with_stuff_to_be_tested.h */
ASSERT_INT_EQ(var1+var2, add(var1, var2));
/* generic versions of ASSERTions are also valid,
* but only for number types (int / uint / float ) */
ASSERT_EQ(var1+var2, add_here(var1, var2));
}
TEST("compare two arrays of strings")
{
int i;
char array1[][10] = {
"str1",
"str2",
"str3",
};
char array2[][10] = {
"str1",
"str2",
/* matching will fail here */
"different",
};
for(i = 0; i < sizeof(array1) / sizeof(char[10]); i++) {
/* ECHO can be used to print (with pretty
* formatting) the current state within the
* test */
ECHO("checking strs at i == %i", i);
ASSERT_STR_EQ(array1[i], array2[i]);
}
}
/* must come after all TESTs */
END_TEST
|