1 /*
2 * CUnit - A Unit testing framework library for C.
3 * Copyright (C) 2001 Anil Kumar
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <string.h>
23
24 #include "Console.h"
25
success_init(void)26 int success_init(void) { return 0; }
success_clean(void)27 int success_clean(void) { return 0; }
28
testSuccess1(void)29 void testSuccess1(void) { ASSERT(1); }
testSuccess2(void)30 void testSuccess2(void) { ASSERT(1); }
testSuccess3(void)31 void testSuccess3(void) { ASSERT(1); }
32
group_failure_init(void)33 int group_failure_init(void) { return 1;}
group_failure_clean(void)34 int group_failure_clean(void) { return 1; }
35
testGroupFailure1(void)36 void testGroupFailure1(void) { ASSERT(0); }
testGroupFailure2(void)37 void testGroupFailure2(void) { ASSERT(2); }
38
testfailure1(void)39 void testfailure1(void) { ASSERT(0); }
testfailure2(void)40 void testfailure2(void) { ASSERT(2); }
testfailure3(void)41 void testfailure3(void) { ASSERT(3); }
42
test1(void)43 void test1(void)
44 {
45 ASSERT((char *)2 != "THis is positive test.");
46 ASSERT((char *)2 == "THis is negative test. test 1");
47 }
48
test2(void)49 void test2(void)
50 {
51 ASSERT((char *)2 != "THis is positive test.");
52 ASSERT((char *)3 == "THis is negative test. test 2");
53 }
54
testSuccessSimpleAssert(void)55 void testSuccessSimpleAssert(void)
56 {
57 ASSERT(1) ;
58 ASSERT(!0) ;
59 }
60
testSuccessAssertTrue(void)61 void testSuccessAssertTrue(void)
62 {
63 ASSERT_TRUE(TRUE) ;
64 ASSERT_TRUE(!FALSE) ;
65 }
66
testSuccessAssertFalse(void)67 void testSuccessAssertFalse(void)
68 {
69 ASSERT_FALSE(FALSE) ;
70 ASSERT_FALSE(!TRUE) ;
71 }
72
testSuccessAssertEqual(void)73 void testSuccessAssertEqual(void)
74 {
75 ASSERT_EQUAL(10, 10) ;
76 ASSERT_EQUAL(0, 0) ;
77 ASSERT_EQUAL(0, -0) ;
78 ASSERT_EQUAL(-12, -12) ;
79 }
80
testSuccessAssertNotEqual(void)81 void testSuccessAssertNotEqual(void)
82 {
83 ASSERT_NOT_EQUAL(10, 11) ;
84 ASSERT_NOT_EQUAL(0, -1) ;
85 ASSERT_NOT_EQUAL(-12, -11) ;
86 }
87
testSuccessAssertPtrEqual(void)88 void testSuccessAssertPtrEqual(void)
89 {
90 ASSERT_PTR_EQUAL((void*)0x100, (void*)0x101) ;
91 }
92
testSuccessAssertPtrNotEqual(void)93 void testSuccessAssertPtrNotEqual(void)
94 {
95 ASSERT_PTR_NOT_EQUAL((void*)0x100, (void*)0x100) ;
96 }
97
testSuccessAssertPtrNull(void)98 void testSuccessAssertPtrNull(void)
99 {
100 ASSERT_PTR_NULL((void*)0x23) ;
101 }
102
testSuccessAssertPtrNotNull(void)103 void testSuccessAssertPtrNotNull(void)
104 {
105 ASSERT_PTR_NOT_NULL(NULL) ;
106 ASSERT_PTR_NOT_NULL(0x0) ;
107 }
108
testSuccessAssertStringEqual(void)109 void testSuccessAssertStringEqual(void)
110 {
111 char str1[] = "test" ;
112 char str2[] = "test" ;
113
114 ASSERT_STRING_EQUAL(str1, str2) ;
115 }
116
testSuccessAssertStringNotEqual(void)117 void testSuccessAssertStringNotEqual(void)
118 {
119 char str1[] = "test" ;
120 char str2[] = "testtsg" ;
121
122 ASSERT_STRING_NOT_EQUAL(str1, str2) ;
123 }
124
testSuccessAssertNStringEqual(void)125 void testSuccessAssertNStringEqual(void)
126 {
127 char str1[] = "test" ;
128 char str2[] = "testgfsg" ;
129
130 ASSERT_NSTRING_EQUAL(str1, str2, strlen(str1)) ;
131 ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1)) ;
132 ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1) + 1) ;
133 }
134
testSuccessAssertNStringNotEqual(void)135 void testSuccessAssertNStringNotEqual(void)
136 {
137 char str1[] = "test" ;
138 char str2[] = "teet" ;
139 char str3[] = "testgfsg" ;
140
141 ASSERT_NSTRING_NOT_EQUAL(str1, str2, 3) ;
142 ASSERT_NSTRING_NOT_EQUAL(str1, str3, strlen(str1) + 1) ;
143 }
144
testSuccessAssertDoubleEqual(void)145 void testSuccessAssertDoubleEqual(void)
146 {
147 ASSERT_DOUBLE_EQUAL(10, 10.0001, 0.0001) ;
148 ASSERT_DOUBLE_EQUAL(10, 10.0001, -0.0001) ;
149 ASSERT_DOUBLE_EQUAL(-10, -10.0001, 0.0001) ;
150 ASSERT_DOUBLE_EQUAL(-10, -10.0001, -0.0001) ;
151 }
152
testSuccessAssertDoubleNotEqual(void)153 void testSuccessAssertDoubleNotEqual(void)
154 {
155 ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, 0.0001) ;
156 ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, -0.0001) ;
157 ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, 0.0001) ;
158 ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, -0.0001) ;
159 }
160
AddTests(void)161 void AddTests(void)
162 {
163 PTestGroup pGroup = NULL;
164 PTestCase pTest = NULL;
165
166 pGroup = add_test_group("Sucess", success_init, success_clean);
167 pTest = add_test_case(pGroup, "testSuccess1", testSuccess1);
168 pTest = add_test_case(pGroup, "testSuccess2", testSuccess2);
169 pTest = add_test_case(pGroup, "testSuccess3", testSuccess3);
170
171 pGroup = add_test_group("failure", NULL, NULL);
172 pTest = add_test_case(pGroup, "testfailure1", testfailure1);
173 pTest = add_test_case(pGroup, "testfailure2", testfailure2);
174 pTest = add_test_case(pGroup, "testfailure3", testfailure3);
175
176 pGroup = add_test_group("group_failure", group_failure_init, group_failure_clean);
177 pTest = add_test_case(pGroup, "testGroupFailure1", testGroupFailure1);
178 pTest = add_test_case(pGroup, "testGroupFailure2", testGroupFailure2);
179 }
180
AddAssertTests(void)181 void AddAssertTests(void)
182 {
183 PTestGroup pGroup = NULL;
184 PTestCase pTest = NULL;
185
186 pGroup = add_test_group("TestSimpleAssert", NULL, NULL);
187 pTest = add_test_case(pGroup, "testSuccessSimpleAssert", testSuccessSimpleAssert);
188
189 pGroup = add_test_group("TestBooleanAssert", NULL, NULL);
190 pTest = add_test_case(pGroup, "testSuccessAssertTrue", testSuccessAssertTrue);
191 pTest = add_test_case(pGroup, "testSuccessAssertFalse", testSuccessAssertFalse);
192
193 pGroup = add_test_group("TestEqualityAssert", NULL, NULL);
194 pTest = add_test_case(pGroup, "testSuccessAssertEqual", testSuccessAssertEqual);
195 pTest = add_test_case(pGroup, "testSuccessAssertNotEqual", testSuccessAssertNotEqual);
196
197 pGroup = add_test_group("TestPointerAssert", NULL, NULL);
198 pTest = add_test_case(pGroup, "testSuccessAssertPtrEqual", testSuccessAssertPtrEqual);
199 pTest = add_test_case(pGroup, "testSuccessAssertPtrNotEqual", testSuccessAssertPtrNotEqual);
200
201 pGroup = add_test_group("TestNullnessAssert", NULL, NULL);
202 pTest = add_test_case(pGroup, "testSuccessAssertPtrNull", testSuccessAssertPtrNull);
203 pTest = add_test_case(pGroup, "testSuccessAssertPtrNotNull", testSuccessAssertPtrNotNull);
204
205 pGroup = add_test_group("TestStringAssert", NULL, NULL);
206 pTest = add_test_case(pGroup, "testSuccessAssertStringEqual", testSuccessAssertStringEqual);
207 pTest = add_test_case(pGroup, "testSuccessAssertStringNotEqual", testSuccessAssertStringNotEqual);
208
209 pGroup = add_test_group("TestNStringAssert", NULL, NULL);
210 pTest = add_test_case(pGroup, "testSuccessAssertNStringEqual", testSuccessAssertNStringEqual);
211 pTest = add_test_case(pGroup, "testSuccessAssertNStringNotEqual", testSuccessAssertNStringNotEqual);
212
213 pGroup = add_test_group("TestDoubleAssert", NULL, NULL);
214 pTest = add_test_case(pGroup, "testSuccessAssertDoubleEqual", testSuccessAssertDoubleEqual);
215 pTest = add_test_case(pGroup, "testSuccessAssertDoubleNotEqual", testSuccessAssertDoubleNotEqual);
216 }
217
218
main(int argc,char * argv[])219 int main(int argc, char* argv[])
220 {
221 setvbuf(stdout, NULL, _IONBF, 0);
222
223 if (argc > 1) {
224 BOOL Run = FALSE ;
225 if (initialize_registry()) {
226 printf("\nInitialize of test Registry failed.");
227 }
228
229 if (!strcmp("--test", argv[1])) {
230 Run = TRUE ;
231 AddTests();
232 }
233 else if (!strcmp("--atest", argv[1])) {
234 Run = TRUE ;
235 AddAssertTests();
236 }
237 else if (!strcmp("--alltest", argv[1])) {
238 Run = TRUE ;
239 AddTests();
240 AddAssertTests();
241 }
242
243 if (TRUE == Run) {
244 console_run_tests();
245 }
246
247 cleanup_registry();
248 }
249
250 return 0;
251 }
252