Skip to content

Commit 4906a8a

Browse files
committed
#2 Upload UnitTest of ObjectC
1 parent eee648f commit 4906a8a

13 files changed

+663
-0
lines changed

test/UnitTest_Basic.c

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <assert.h>
4+
#include "Class.h"
5+
#include "IUnitTest.h"
6+
#include "Basic.h"
7+
#include "IObject.h"
8+
#include "UnitTest_Basic.h"
9+
10+
Class UnitTest_Basic_Class = {CLASS};
11+
12+
struct _UnitTest_Basic
13+
{
14+
Class* class;
15+
IUnitTest* iUnitTest;
16+
};
17+
18+
void _UnitTest_Basic_TestAll(void* implementor);
19+
20+
void Test_Short_IObject()
21+
{
22+
int size, result;
23+
short num;
24+
short* new_object;
25+
26+
num = 0;
27+
new_object = (short*)IObject_New(Short);
28+
assert(new_object != NULL);
29+
Short->implementor = new_object;
30+
size = sizeof(*new_object);
31+
assert(size == sizeof(short));
32+
num = 4;
33+
IObject_Copy(Short, &num);
34+
assert(*(new_object) == 4);
35+
result = IObject_Equal(Short, &num);
36+
assert(result == 1);
37+
num = 0;
38+
result = IObject_Equal(Short, &num);
39+
assert(result == 0);
40+
Short->implementor = NULL;
41+
new_object = (short*)IObject_Del(Short);
42+
assert(new_object == NULL);
43+
printf("Test_Short_IObject Success.\n");
44+
}
45+
46+
void Test_Basic_Pointer_New()
47+
{
48+
void** pointer;
49+
50+
pointer = (void**)IObject_New(Pointer);
51+
assert(pointer != NULL);
52+
printf("Test_Basic_Pointer_New Success.\n");
53+
}
54+
55+
UnitTest_Basic* UnitTest_Basic_New()
56+
{
57+
UnitTest_Basic* unit_test;
58+
59+
unit_test = (UnitTest_Basic*)malloc(sizeof(UnitTest_Basic)+sizeof(IUnitTest));
60+
unit_test->class = UNITTEST_BASIC;
61+
unit_test->iUnitTest = (IUnitTest*)(unit_test+1);
62+
unit_test->iUnitTest->implementor = unit_test;
63+
unit_test->iUnitTest->TestAll = _UnitTest_Basic_TestAll;
64+
65+
return unit_test;
66+
}
67+
68+
UnitTest_Basic* UnitTest_Basic_Del(UnitTest_Basic* this)
69+
{
70+
free(this);
71+
72+
return NULL;
73+
}
74+
75+
IUnitTest* UnitTest_Basic_GetIUnitTest(UnitTest_Basic* this)
76+
{
77+
return this->iUnitTest;
78+
}
79+
80+
void UnitTest_Basic_TestAll(UnitTest_Basic* this)
81+
{
82+
Test_Short_IObject();
83+
Test_Basic_Pointer_New();
84+
}
85+
86+
void _UnitTest_Basic_TestAll(void* implementor)
87+
{
88+
UnitTest_Basic* unit_test;
89+
90+
unit_test = (UnitTest_Basic*)implementor;
91+
UnitTest_Basic_TestAll(unit_test);
92+
}

test/UnitTest_Basic.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef _UNITTEST_BASIC_H_
2+
#define _UNITTEST_BASIC_H_
3+
4+
#define UNITTEST_BASIC &UnitTest_Basic_Class
5+
6+
typedef struct _Class Class;
7+
typedef struct _IUnitTest IUnitTest;
8+
typedef struct _UnitTest_Basic UnitTest_Basic;
9+
10+
extern Class UnitTest_Basic_Class;
11+
12+
extern UnitTest_Basic* UnitTest_Basic_New();
13+
14+
extern UnitTest_Basic* UnitTest_Basic_Del(UnitTest_Basic* this);
15+
16+
extern IUnitTest* UnitTest_Basic_GetIUnitTest(UnitTest_Basic* this);
17+
18+
extern void UnitTest_Basic_TestAll(UnitTest_Basic* this);
19+
20+
#endif /*_UNITTEST_BASIC_H_*/

test/UnitTest_Class.c

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#include <stdio.h>
2+
#include <assert.h>
3+
#include <stdlib.h>
4+
#include "Class.h"
5+
#include "IUnitTest.h"
6+
#include "UnitTest_Class.h"
7+
8+
Class UnitTest_Class_Class = {CLASS};
9+
10+
struct _UnitTest_Class
11+
{
12+
Class* class;
13+
IUnitTest* iUnitTest;
14+
};
15+
16+
void _UnitTest_Class_TestAll(void* implementor);
17+
18+
void Test_InstanceOf_Chain()
19+
{
20+
int result;
21+
Class class1 = {CLASS};
22+
Class class2 = {&class1};
23+
Class class3 = {&class2};
24+
Class class4 = {&class3};
25+
26+
result = InstanceOf(&class4, &class3);
27+
assert(result == 1);
28+
result = InstanceOf(&class4, &class2);
29+
assert(result == 1);
30+
result = InstanceOf(&class4, &class1);
31+
assert(result == 1);
32+
result = InstanceOf(&class4, CLASS);
33+
assert(result == 1);
34+
result = InstanceOf(&class4, NULL);
35+
assert(result == 1);
36+
result = InstanceOf(CLASS, CLASS);
37+
assert(result == 0);
38+
result = InstanceOf(CLASS, &class1);
39+
assert(result == 0);
40+
result = InstanceOf(CLASS, &class2);
41+
assert(result == 0);
42+
result = InstanceOf(CLASS, &class3);
43+
assert(result == 0);
44+
result = InstanceOf(CLASS, &class4);
45+
assert(result == 0);
46+
printf("Test_InstanceOf_Chain Success.\n");
47+
}
48+
49+
void Test_InstanceOf_Tree()
50+
{
51+
int result;
52+
Class class1 = {CLASS};
53+
Class class2 = {CLASS};
54+
Class class3 = {&class1};
55+
Class class4 = {&class2};
56+
57+
result = InstanceOf(&class4, &class1);
58+
assert(result == 0);
59+
result = InstanceOf(&class4, &class3);
60+
assert(result == 0);
61+
result = InstanceOf(&class2, &class1);
62+
assert(result == 0);
63+
printf("Test_InstanceOf_Tree Success.\n");
64+
}
65+
66+
UnitTest_Class* UnitTest_Class_New()
67+
{
68+
UnitTest_Class* unit_test;
69+
70+
unit_test = (UnitTest_Class*)malloc(sizeof(UnitTest_Class)+sizeof(IUnitTest));
71+
unit_test->class = UNITTEST_CLASS;
72+
unit_test->iUnitTest = (IUnitTest*)(unit_test+1);
73+
unit_test->iUnitTest->implementor = unit_test;
74+
unit_test->iUnitTest->TestAll = _UnitTest_Class_TestAll;
75+
76+
return unit_test;
77+
}
78+
79+
UnitTest_Class* UnitTest_Class_Del(UnitTest_Class* this)
80+
{
81+
free(this);
82+
83+
return NULL;
84+
}
85+
86+
IUnitTest* UnitTest_Class_GetIUnitTest(UnitTest_Class* this)
87+
{
88+
return this->iUnitTest;
89+
}
90+
91+
void UnitTest_Class_TestAll(UnitTest_Class* this)
92+
{
93+
Test_InstanceOf_Chain();
94+
Test_InstanceOf_Tree();
95+
}
96+
97+
void _UnitTest_Class_TestAll(void* implementor)
98+
{
99+
UnitTest_Class* unit_test;
100+
101+
unit_test = (UnitTest_Class*)implementor;
102+
UnitTest_Class_TestAll(unit_test);
103+
}

test/UnitTest_Class.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef _UNITTEST_CLASS_H_
2+
#define _UNITTEST_CLASS_H_
3+
4+
#define UNITTEST_CLASS &UnitTest_Class_Class
5+
6+
typedef struct _Class Class;
7+
typedef struct _IUnitTest IUnitTest;
8+
typedef struct _UnitTest_Class UnitTest_Class;
9+
10+
extern Class UnitTest_Class_Class;
11+
12+
extern UnitTest_Class* UnitTest_Class_New();
13+
14+
extern UnitTest_Class* UnitTest_Class_Del(UnitTest_Class* this);
15+
16+
extern IUnitTest* UnitTest_Class_GetIUnitTest(UnitTest_Class* this);
17+
18+
extern void UnitTest_Class_TestAll(UnitTest_Class* this);
19+
20+
#endif /*_UNITTEST_CLASS_H_*/

test/UnitTest_IObject.c

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <assert.h>
4+
#include "Class.h"
5+
#include "IUnitTest.h"
6+
#include "IObject.h"
7+
#include "UnitTest_IObject.h"
8+
9+
Class UnitTest_IObject_Class = {CLASS};
10+
11+
struct _UnitTest_IObject
12+
{
13+
Class* class;
14+
IUnitTest* iUnitTest;
15+
};
16+
17+
void _UnitTest_IObject_TestAll(void* implementor);
18+
19+
void* _Stub_IObject_New(void* implementor)
20+
{
21+
return (void*)0;
22+
}
23+
24+
void* _Stub_IObject_Del(void* implementor)
25+
{
26+
return (void*)1;
27+
}
28+
29+
int _Stub_IObject_Copy(void* implementor, void* object)
30+
{
31+
return 2;
32+
}
33+
34+
int _Stub_IObject_Equal(void* implementor, void* object)
35+
{
36+
return 3;
37+
}
38+
39+
void Test_IObject_Correct_Function_Pointer()
40+
{
41+
int result;
42+
IObject stub_iObject = {NULL, _Stub_IObject_New, _Stub_IObject_Del, _Stub_IObject_Copy, _Stub_IObject_Equal};
43+
44+
result = (int)IObject_New(&stub_iObject);
45+
assert(result == 0);
46+
result = (int)IObject_Del(&stub_iObject);
47+
assert(result == 1);
48+
result = IObject_Copy(&stub_iObject, NULL);
49+
assert(result == 2);
50+
result = IObject_Equal(&stub_iObject, NULL);
51+
assert(result == 3);
52+
printf("Test_IObject_Correct_Function_Pointer Success.\n");
53+
}
54+
55+
UnitTest_IObject* UnitTest_IObject_New()
56+
{
57+
UnitTest_IObject* unit_test;
58+
59+
unit_test = (UnitTest_IObject*)malloc(sizeof(UnitTest_IObject)+sizeof(IUnitTest));
60+
unit_test->class = UNITTEST_IOBJECT;
61+
unit_test->iUnitTest = (IUnitTest*)(unit_test+1);
62+
unit_test->iUnitTest->implementor = unit_test;
63+
unit_test->iUnitTest->TestAll = _UnitTest_IObject_TestAll;
64+
65+
return unit_test;
66+
}
67+
68+
UnitTest_IObject* UnitTest_IObject_Del(UnitTest_IObject* this)
69+
{
70+
free(this);
71+
72+
return NULL;
73+
}
74+
75+
IUnitTest* UnitTest_IObject_GetIUnitTest(UnitTest_IObject* this)
76+
{
77+
return this->iUnitTest;
78+
}
79+
80+
void UnitTest_IObject_TestAll(UnitTest_IObject* this)
81+
{
82+
Test_IObject_Correct_Function_Pointer();
83+
}
84+
85+
void _UnitTest_IObject_TestAll(void* implementor)
86+
{
87+
UnitTest_IObject* unit_test;
88+
89+
unit_test = (UnitTest_IObject*)implementor;
90+
UnitTest_IObject_TestAll(unit_test);
91+
}

test/UnitTest_IObject.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef _UNITTEST_IOBJECT_H_
2+
#define _UNITTEST_IOBJECT_H_
3+
4+
#define UNITTEST_IOBJECT &UnitTest_IObject_Class
5+
6+
typedef struct _Class Class;
7+
typedef struct _IUnitTest IUnitTest;
8+
typedef struct _UnitTest_IObject UnitTest_IObject;
9+
10+
extern Class UnitTest_IObject_Class;
11+
12+
extern UnitTest_IObject* UnitTest_IObject_New();
13+
14+
extern UnitTest_IObject* UnitTest_IObject_Del(UnitTest_IObject* this);
15+
16+
extern IUnitTest* UnitTest_IObject_GetIUnitTest(UnitTest_IObject* this);
17+
18+
extern void UnitTest_IObject_TestAll(UnitTest_IObject* this);
19+
20+
#endif /*_UNITTEST_IOBJECT_H_*/

0 commit comments

Comments
 (0)