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