Commit 9a28fc52db1178258be0dc9b136a4c64194fd1ac

Authored by Georg Hopp
1 parent e090c797

added more convenience macros for classes and used them in the classes

@@ -70,7 +70,7 @@ main(int argc, char * argv[]) @@ -70,7 +70,7 @@ main(int argc, char * argv[])
70 sizeof(DYNTYPE_HASH), 70 sizeof(DYNTYPE_HASH),
71 data)); 71 data));
72 72
73 - json = toJson(packet); 73 + toJson(packet, &json);
74 json_str = json_object_to_json_string(json); 74 json_str = json_object_to_json_string(json);
75 length = strlen(json_str); 75 length = strlen(json_str);
76 76
@@ -33,41 +33,48 @@ @@ -33,41 +33,48 @@
33 #define ENDC(_class) } * _class; \ 33 #define ENDC(_class) } * _class; \
34 extern const _CCLASS const __##_class; 34 extern const _CCLASS const __##_class;
35 35
36 -#define INIT_CCLASS(class, jsonConst, toJson) \  
37 - static const struct CCLASS _class = { \  
38 - CCLASS_MAGIC, \  
39 - sizeof(struct _##class), \  
40 - (ctor)__construct, \  
41 - (jCtor)jsonConst, \  
42 - (dtor)__destruct, \  
43 - (jTo)toJson \  
44 - }; const _CCLASS const __##class = (const _CCLASS const)&_class  
45 -  
46 -  
47 -  
48 typedef void (* ctor)(void *, va_list *); 36 typedef void (* ctor)(void *, va_list *);
49 typedef void (* dtor)(void *); 37 typedef void (* dtor)(void *);
50 typedef void (* jCtor)(void *, struct json_object *); 38 typedef void (* jCtor)(void *, struct json_object *);
51 -typedef struct json_object * (* jTo)(void *); 39 +typedef void (* jTo)(void *, struct json_object **);
52 40
53 41
54 typedef struct CCLASS { 42 typedef struct CCLASS {
55 const int magic; 43 const int magic;
56 size_t size; 44 size_t size;
57 void (* __construct)(void * _this, va_list * params); 45 void (* __construct)(void * _this, va_list * params);
58 - void (* __jsonConst)(void * _this, struct json_object * json);  
59 void (* __destruct)(void * _this); 46 void (* __destruct)(void * _this);
60 - struct json_object * (* __toJson)(void * _this); 47 + void (* __jsonConst)(void * _this, struct json_object * json);
  48 + void (* __toJson)(void * _this, struct json_object ** json);
61 } * _CCLASS; 49 } * _CCLASS;
62 #define CCLASS_PTR_SIZE sizeof(struct CCLASS *) 50 #define CCLASS_PTR_SIZE sizeof(struct CCLASS *)
63 #define CCLASS_SIZE sizeof(struct CCLASS) 51 #define CCLASS_SIZE sizeof(struct CCLASS)
64 52
65 -void * _new(const _CCLASS _class, ...);  
66 -void * _newFromJson(const _CCLASS _class, struct json_object * json);  
67 -void delete(void * _object);  
68 -struct json_object * toJson(void * _object);  
69 -int isObject(void * _object);  
70 -int _instanceOf(const _CCLASS _class, void * _object); 53 +#define __construct(class) static void __construct(class _this, va_list * params)
  54 +#define __destruct(class) static void __destruct(class _this)
  55 +#define __jsonConst(class) static void __jsonConst(class _this, struct json_object * json)
  56 +#define __toJson(class) static void __toJson(class _this, struct json_object ** json)
  57 +
  58 +#define INIT_CCLASS(class) \
  59 + __construct(class); \
  60 + __destruct(class); \
  61 + __jsonConst(class); \
  62 + __toJson(class); \
  63 + static const struct CCLASS _class = { \
  64 + CCLASS_MAGIC, \
  65 + sizeof(struct _##class), \
  66 + (ctor)__construct, \
  67 + (dtor)__destruct, \
  68 + (jCtor)__jsonConst, \
  69 + (jTo)__toJson \
  70 + }; const _CCLASS __##class = (const _CCLASS)&_class
  71 +
  72 +void * _new(const _CCLASS _class, ...);
  73 +void * _newFromJson(const _CCLASS _class, struct json_object * json);
  74 +void delete(void * _object);
  75 +void toJson(void * _object, struct json_object ** json);
  76 +int isObject(void * _object);
  77 +int _instanceOf(const _CCLASS _class, void * _object);
71 78
72 #define new(class, ...) _new((__##class), __VA_ARGS__) 79 #define new(class, ...) _new((__##class), __VA_ARGS__)
73 #define newFromJson(class, json) _newFromJson((__##class), (json)) 80 #define newFromJson(class, json) _newFromJson((__##class), (json))
@@ -16,17 +16,16 @@ @@ -16,17 +16,16 @@
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */ 17 */
18 #ifndef __DYNTYPE_H__ 18 #ifndef __DYNTYPE_H__
  19 +
  20 +#ifndef __DYNTYPE_HASH_H__
  21 +#include "token/dyntype/hash.h"
  22 +#endif//__DYNTYPE_HASH_H__
  23 +
19 #define __DYNTYPE_H__ 24 #define __DYNTYPE_H__
20 25
21 #include <sys/types.h> 26 #include <sys/types.h>
22 -  
23 #include "token/cclass.h" 27 #include "token/cclass.h"
24 28
25 -struct _DYNTYPE;  
26 -  
27 -#include "token/dyntype/hash.h"  
28 -  
29 -  
30 enum DYNTYPE_TYPES { 29 enum DYNTYPE_TYPES {
31 DYNTYPE_TYPE_NULL = 0, 30 DYNTYPE_TYPE_NULL = 0,
32 DYNTYPE_TYPE_BOOLEAN, 31 DYNTYPE_TYPE_BOOLEAN,
@@ -51,6 +50,8 @@ CLASS(DYNTYPE) @@ -51,6 +50,8 @@ CLASS(DYNTYPE)
51 } data; 50 } data;
52 ENDC(DYNTYPE) 51 ENDC(DYNTYPE)
53 52
  53 +#include "token/dyntype/hash.h"
  54 +
54 #endif//__DYNTYPE_H__ 55 #endif//__DYNTYPE_H__
55 56
56 // vim: set et ts=4 sw=4: 57 // vim: set et ts=4 sw=4:
@@ -16,25 +16,33 @@ @@ -16,25 +16,33 @@
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */ 17 */
18 #ifndef __DYNTYPE_HASH_H__ 18 #ifndef __DYNTYPE_HASH_H__
19 -#define __DYNTYPE_HASH_H__  
20 19
21 #include <sys/types.h> 20 #include <sys/types.h>
22 -  
23 #include "token/cclass.h" 21 #include "token/cclass.h"
24 -#include "token/dyntype.h"  
25 22
  23 +#ifndef __DYNTYPE_H__
  24 +
  25 +struct _DYNTYPE_HASH;
  26 +#define DYNTYPE_HASH struct _DYNTYPE_HASH *
  27 +
  28 +#else
  29 +
  30 +#undef DYNTYPE_HASH
  31 +#define __DYNTYPE_HASH_H__
26 32
27 CLASS(DYNTYPE_HASH) 33 CLASS(DYNTYPE_HASH)
28 char ** keys; 34 char ** keys;
29 - struct _DYNTYPE ** values; 35 + DYNTYPE * values;
30 size_t size; 36 size_t size;
31 size_t used; 37 size_t used;
32 ENDC(DYNTYPE_HASH) 38 ENDC(DYNTYPE_HASH)
33 39
34 40
35 void dyntype_hash_set(DYNTYPE_HASH _this, const char * key, struct _DYNTYPE * value); 41 void dyntype_hash_set(DYNTYPE_HASH _this, const char * key, struct _DYNTYPE * value);
36 -struct _DYNTYPE * dyntype_hash_get(DYNTYPE_HASH _this, const char * key);  
37 -struct _DYNTYPE * dyntype_hash_del(DYNTYPE_HASH _this, const char * key); 42 +DYNTYPE dyntype_hash_get(DYNTYPE_HASH _this, const char * key);
  43 +void dyntype_hash_del(DYNTYPE_HASH _this, const char * key);
  44 +
  45 +#endif
38 46
39 #endif//__DYNTYPE_HASH_H__ 47 #endif//__DYNTYPE_HASH_H__
40 48
@@ -22,6 +22,10 @@ @@ -22,6 +22,10 @@
22 22
23 #include "token/cclass.h" 23 #include "token/cclass.h"
24 24
  25 +#undef __construct
  26 +#undef __destruct
  27 +#undef __jsonConst
  28 +#undef __toJson
25 29
26 void * 30 void *
27 _new(const _CCLASS _class, ...) 31 _new(const _CCLASS _class, ...)
@@ -70,16 +74,14 @@ delete(void * _object) @@ -70,16 +74,14 @@ delete(void * _object)
70 *(void**)_object = NULL; 74 *(void**)_object = NULL;
71 } 75 }
72 76
73 -struct json_object *  
74 -toJson(void * _object) 77 +void
  78 +toJson(void * _object, struct json_object ** json)
75 { 79 {
76 const struct CCLASS ** class = _object; 80 const struct CCLASS ** class = _object;
77 81
78 if (_object && *class && (*class)->__toJson) { 82 if (_object && *class && (*class)->__toJson) {
79 - return (*class)->__toJson(_object); 83 + (*class)->__toJson(_object, json);
80 } 84 }
81 -  
82 - return NULL;  
83 } 85 }
84 86
85 int 87 int
@@ -28,9 +28,9 @@ @@ -28,9 +28,9 @@
28 #include "token/crypt.h" 28 #include "token/crypt.h"
29 29
30 30
31 -static  
32 -void  
33 -__construct(CRYPT _this, va_list * params) 31 +INIT_CCLASS(CRYPT);
  32 +
  33 +__construct(CRYPT)
34 { 34 {
35 _this->algorithm = va_arg(* params, const char * const); 35 _this->algorithm = va_arg(* params, const char * const);
36 _this->mode = va_arg(* params, const char * const); 36 _this->mode = va_arg(* params, const char * const);
@@ -45,9 +45,7 @@ __construct(CRYPT _this, va_list * params) @@ -45,9 +45,7 @@ __construct(CRYPT _this, va_list * params)
45 _this->keysize = mcrypt_enc_get_key_size(_this->mcrypt); 45 _this->keysize = mcrypt_enc_get_key_size(_this->mcrypt);
46 } 46 }
47 47
48 -static  
49 -void  
50 -__destruct(CRYPT _this) 48 +__destruct(CRYPT)
51 { 49 {
52 if (_this->iv) { 50 if (_this->iv) {
53 free(_this->iv); 51 free(_this->iv);
@@ -56,7 +54,8 @@ __destruct(CRYPT _this) @@ -56,7 +54,8 @@ __destruct(CRYPT _this)
56 mcrypt_module_close(_this->mcrypt); 54 mcrypt_module_close(_this->mcrypt);
57 } 55 }
58 56
59 -INIT_CCLASS(CRYPT, NULL, NULL); 57 +__jsonConst(CRYPT) {}
  58 +__toJson(CRYPT) {}
60 59
61 void * 60 void *
62 crypt_createIv(CRYPT _this) 61 crypt_createIv(CRYPT _this)
@@ -94,7 +93,7 @@ createKey(CRYPT _this, const char * const password) @@ -94,7 +93,7 @@ createKey(CRYPT _this, const char * const password)
94 _this->keysize, 93 _this->keysize,
95 NULL, 94 NULL,
96 0, 95 0,
97 - (char *)password, // @TODO: bad karma...now this might change password. 96 + (mutils_word8 *)password, // @TODO: bad karma...this might change password.
98 strlen(password)); 97 strlen(password));
99 98
100 return key; 99 return key;
@@ -24,9 +24,9 @@ @@ -24,9 +24,9 @@
24 #include "token/dyntype/hash.h" 24 #include "token/dyntype/hash.h"
25 25
26 26
27 -static  
28 -void  
29 -__construct(DYNTYPE _this, va_list * params) 27 +INIT_CCLASS(DYNTYPE);
  28 +
  29 +__construct(DYNTYPE)
30 { 30 {
31 _this->type = va_arg(* params, enum DYNTYPE_TYPES); 31 _this->type = va_arg(* params, enum DYNTYPE_TYPES);
32 _this->size = va_arg(* params, size_t); 32 _this->size = va_arg(* params, size_t);
@@ -50,9 +50,7 @@ __construct(DYNTYPE _this, va_list * params) @@ -50,9 +50,7 @@ __construct(DYNTYPE _this, va_list * params)
50 } 50 }
51 } 51 }
52 52
53 -static  
54 -void  
55 -__jsonConst(DYNTYPE _this, struct json_object * json) 53 +__jsonConst(DYNTYPE)
56 { 54 {
57 switch (json_object_get_type(json)) { 55 switch (json_object_get_type(json)) {
58 case json_type_int: 56 case json_type_int:
@@ -86,9 +84,7 @@ __jsonConst(DYNTYPE _this, struct json_object * json) @@ -86,9 +84,7 @@ __jsonConst(DYNTYPE _this, struct json_object * json)
86 } 84 }
87 } 85 }
88 86
89 -static  
90 -void  
91 -__destruct(DYNTYPE _this) 87 +__destruct(DYNTYPE)
92 { 88 {
93 if (_this) { 89 if (_this) {
94 switch(_this->type) { 90 switch(_this->type) {
@@ -106,32 +102,24 @@ __destruct(DYNTYPE _this) @@ -106,32 +102,24 @@ __destruct(DYNTYPE _this)
106 } 102 }
107 } 103 }
108 104
109 -static  
110 -struct json_object *  
111 -__toJson(DYNTYPE _this) 105 +__toJson(DYNTYPE)
112 { 106 {
113 - struct json_object * json = NULL;  
114 -  
115 switch(_this->type) { 107 switch(_this->type) {
116 case DYNTYPE_TYPE_INT: 108 case DYNTYPE_TYPE_INT:
117 - json = json_object_new_int((_this->data)._int); 109 + *json = json_object_new_int((_this->data)._int);
118 break; 110 break;
119 111
120 case DYNTYPE_TYPE_STRING: 112 case DYNTYPE_TYPE_STRING:
121 - json = json_object_new_string((_this->data)._string); 113 + *json = json_object_new_string((_this->data)._string);
122 break; 114 break;
123 115
124 case DYNTYPE_TYPE_HASH: 116 case DYNTYPE_TYPE_HASH:
125 - json = toJson((_this->data)._hash); 117 + toJson((_this->data)._hash, json);
126 break; 118 break;
127 119
128 default: 120 default:
129 - json = NULL; 121 + *json = NULL;
130 } 122 }
131 -  
132 - return json;  
133 } 123 }
134 124
135 -INIT_CCLASS(DYNTYPE, __jsonConst, __toJson);  
136 -  
137 // vim: set et ts=4 sw=4: 125 // vim: set et ts=4 sw=4:
@@ -29,18 +29,17 @@ @@ -29,18 +29,17 @@
29 29
30 static void _updateHashSize(DYNTYPE_HASH _this); 30 static void _updateHashSize(DYNTYPE_HASH _this);
31 31
32 -static  
33 -void  
34 -__construct(DYNTYPE_HASH _this, va_list * params) 32 +INIT_CCLASS(DYNTYPE_HASH);
  33 +
  34 +__construct(DYNTYPE_HASH)
35 { 35 {
36 _this->size = 0; 36 _this->size = 0;
37 _this->used = 0; 37 _this->used = 0;
38 _updateHashSize(_this); 38 _updateHashSize(_this);
39 } 39 }
  40 +#undef __construct
40 41
41 -static  
42 -void  
43 -__jsonConst(DYNTYPE_HASH _this, struct json_object * json) 42 +__jsonConst(DYNTYPE_HASH)
44 { 43 {
45 __construct(_this, NULL); 44 __construct(_this, NULL);
46 45
@@ -53,9 +52,7 @@ __jsonConst(DYNTYPE_HASH _this, struct json_object * json) @@ -53,9 +52,7 @@ __jsonConst(DYNTYPE_HASH _this, struct json_object * json)
53 } 52 }
54 } 53 }
55 54
56 -static  
57 -void  
58 -__destruct(DYNTYPE_HASH _this) 55 +__destruct(DYNTYPE_HASH)
59 { 56 {
60 size_t index; 57 size_t index;
61 58
@@ -67,24 +64,19 @@ __destruct(DYNTYPE_HASH _this) @@ -67,24 +64,19 @@ __destruct(DYNTYPE_HASH _this)
67 free(_this->values); 64 free(_this->values);
68 } 65 }
69 66
70 -static  
71 -struct json_object *  
72 -__toJson(DYNTYPE_HASH _this) 67 +__toJson(DYNTYPE_HASH)
73 { 68 {
74 size_t index; 69 size_t index;
75 - struct json_object * json = json_object_new_object(); 70 + *json = json_object_new_object();
76 71
77 for (index = 0; index < _this->used; index ++) { 72 for (index = 0; index < _this->used; index ++) {
78 - json_object_object_add(  
79 - json,  
80 - _this->keys[index],  
81 - toJson(_this->values[index]));  
82 - } 73 + struct json_object * values;
83 74
84 - return json;  
85 -} 75 + toJson(_this->values[index], &values);
86 76
87 -INIT_CCLASS(DYNTYPE_HASH, __jsonConst, __toJson); 77 + json_object_object_add(*json, _this->keys[index], values);
  78 + }
  79 +}
88 80
89 static 81 static
90 void 82 void
@@ -137,7 +129,8 @@ dyntype_hash_set(DYNTYPE_HASH _this, const char * key, DYNTYPE value) @@ -137,7 +129,8 @@ dyntype_hash_set(DYNTYPE_HASH _this, const char * key, DYNTYPE value)
137 _updateHashSize(_this); 129 _updateHashSize(_this);
138 } 130 }
139 131
140 -DYNTYPE dyntype_hash_get(DYNTYPE_HASH _this, const char * key) 132 +DYNTYPE
  133 +dyntype_hash_get(DYNTYPE_HASH _this, const char * key)
141 { 134 {
142 size_t index = _getHashIdx(_this, key); 135 size_t index = _getHashIdx(_this, key);
143 136
@@ -148,9 +141,9 @@ DYNTYPE dyntype_hash_get(DYNTYPE_HASH _this, const char * key) @@ -148,9 +141,9 @@ DYNTYPE dyntype_hash_get(DYNTYPE_HASH _this, const char * key)
148 return _this->values[index]; 141 return _this->values[index];
149 } 142 }
150 143
151 -DYNTYPE dyntype_hash_del(DYNTYPE_HASH _this, const char * key) 144 +void
  145 +dyntype_hash_del(DYNTYPE_HASH _this, const char * key)
152 { 146 {
153 - DYNTYPE found = NULL;  
154 size_t index = _getHashIdx(_this, key); 147 size_t index = _getHashIdx(_this, key);
155 148
156 if (index == _this->used) { 149 if (index == _this->used) {
@@ -20,16 +20,14 @@ @@ -20,16 +20,14 @@
20 #include "token/packet.h" 20 #include "token/packet.h"
21 21
22 22
23 -static  
24 -void  
25 -__construct(PACKET _this, va_list * params) 23 +INIT_CCLASS(PACKET);
  24 +
  25 +__construct(PACKET)
26 { 26 {
27 packet_set_default_content(_this); 27 packet_set_default_content(_this);
28 } 28 }
29 29
30 -static  
31 -void  
32 -__jsonConst(PACKET _this, struct json_object * json) 30 +__jsonConst(PACKET)
33 { 31 {
34 struct json_object * header = NULL; 32 struct json_object * header = NULL;
35 struct json_object * data = NULL; 33 struct json_object * data = NULL;
@@ -51,25 +49,20 @@ __jsonConst(PACKET _this, struct json_object * json) @@ -51,25 +49,20 @@ __jsonConst(PACKET _this, struct json_object * json)
51 packet_setData(_this, newFromJson(DYNTYPE, data)); 49 packet_setData(_this, newFromJson(DYNTYPE, data));
52 } 50 }
53 51
54 -static  
55 -void  
56 -__destruct(PACKET _this)  
57 -{  
58 -} 52 +__destruct(PACKET) {}
59 53
60 -static  
61 -struct json_object *  
62 -__toJson(PACKET _this) 54 +__toJson(PACKET)
63 { 55 {
64 - struct json_object * json = json_object_new_array(); 56 + struct json_object * value;
65 57
66 - json_object_array_add(json, toJson(packet_getHeader(_this)));  
67 - json_object_array_add(json, toJson(packet_getData(_this))); 58 + *json = json_object_new_array();
68 59
69 - return json;  
70 -} 60 + toJson(packet_getHeader(_this), &value);
  61 + json_object_array_add(*json, value);
71 62
72 -INIT_CCLASS(PACKET, __jsonConst, __toJson); 63 + toJson(packet_getData(_this), &value);
  64 + json_object_array_add(*json, value);
  65 +}
73 66
74 DYNTYPE packet_getHeader(PACKET _this) 67 DYNTYPE packet_getHeader(PACKET _this)
75 { 68 {
@@ -88,7 +88,7 @@ testToJson(void) @@ -88,7 +88,7 @@ testToJson(void)
88 int value; 88 int value;
89 89
90 _reset(); 90 _reset();
91 - json = toJson(mock); 91 + toJson(mock, &json);
92 92
93 ASSERT_NOT_NULL(json); 93 ASSERT_NOT_NULL(json);
94 94
@@ -6,24 +6,15 @@ @@ -6,24 +6,15 @@
6 6
7 char _called; 7 char _called;
8 8
9 -void  
10 -inline  
11 -_reset()  
12 -{  
13 - _called = 0;  
14 -} 9 +INIT_CCLASS(MOCK_CLASS);
15 10
16 -static  
17 -void  
18 -__construct(MOCK_CLASS _this, va_list * params) 11 +__construct(MOCK_CLASS)
19 { 12 {
20 _called = 1; 13 _called = 1;
21 _this->value = va_arg(* params, int); 14 _this->value = va_arg(* params, int);
22 } 15 }
23 16
24 -static  
25 -void  
26 -__jsonConst(MOCK_CLASS _this, json_object * json) 17 +__jsonConst(MOCK_CLASS)
27 { 18 {
28 _called = 1; 19 _called = 1;
29 assert(json_type_int == json_object_get_type(json)); 20 assert(json_type_int == json_object_get_type(json));
@@ -31,25 +22,17 @@ __jsonConst(MOCK_CLASS _this, json_object * json) @@ -31,25 +22,17 @@ __jsonConst(MOCK_CLASS _this, json_object * json)
31 _this->value = json_object_get_int(json); 22 _this->value = json_object_get_int(json);
32 } 23 }
33 24
34 -static  
35 -void  
36 -__destruct(MOCK_CLASS _this) 25 +__destruct(MOCK_CLASS)
37 { 26 {
38 _called = 1; 27 _called = 1;
39 } 28 }
40 29
41 -static  
42 -struct json_object *  
43 -__toJson(MOCK_CLASS _this) 30 +__toJson(MOCK_CLASS)
44 { 31 {
45 - struct json_object * json = json_object_new_int(_this->value);  
46 - 32 + *json = json_object_new_int(_this->value);
47 _called = 1; 33 _called = 1;
48 - return json;  
49 } 34 }
50 35
51 -INIT_CCLASS(MOCK_CLASS, __jsonConst, __toJson);  
52 -  
53 /** 36 /**
54 * ~~~ method implementations ~~~~~~~~ 37 * ~~~ method implementations ~~~~~~~~
55 */ 38 */
@@ -3,10 +3,18 @@ @@ -3,10 +3,18 @@
3 3
4 #include "token/cclass.h" 4 #include "token/cclass.h"
5 5
6 -  
7 extern char _called; 6 extern char _called;
8 7
9 -extern void inline _reset(); 8 +#ifndef _RESET
  9 +#define _RESET
  10 +void
  11 +inline
  12 +_reset()
  13 +{
  14 + _called = 0;
  15 +}
  16 +#endif//_RESET
  17 +
10 18
11 CLASS(MOCK_CLASS) 19 CLASS(MOCK_CLASS)
12 int value; 20 int value;
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 5
6 6
7 const char testname[] = "packetTest"; 7 const char testname[] = "packetTest";
8 -struct PACKET * packet = NULL; 8 +PACKET packet = NULL;
9 9
10 10
11 static 11 static
@@ -55,7 +55,7 @@ main(int argc, char * argv[]) @@ -55,7 +55,7 @@ main(int argc, char * argv[])
55 printf("running tests for %s\n", testname); 55 printf("running tests for %s\n", testname);
56 56
57 for (index=0; index<count; index++) { 57 for (index=0; index<count; index++) {
58 - int result, _setUp = 0; // initialize setup to false 58 + int result = TEST_ERROR, _setUp = 0; // initialize setup to false
59 59
60 if (NULL != setUp) { 60 if (NULL != setUp) {
61 if (TEST_OK == (result = setUp())) { 61 if (TEST_OK == (result = setUp())) {
Please register or login to post a comment