31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
puts("Resuming..."); \
}
const char *str = "Hallo!";
#define TEST(type) \
puts("Trying to add too much to an array..."); \
a = [type newWithItemSize: 4096]; \
CATCH_EXCEPTION([a addNItems: SIZE_MAX \
fromCArray: NULL], \
OFOutOfRangeException) \
\
puts("Trying to add something after that error..."); \
p = [a getMemWithSize: 4096]; \
memset(p, 255, 4096); \
|
|
|
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
puts("Resuming..."); \
}
const char *str = "Hallo!";
#define TEST(type) \
puts("Trying to add too much to an array..."); \
a = [[type alloc] initWithItemSize: 4096]; \
CATCH_EXCEPTION([a addNItems: SIZE_MAX \
fromCArray: NULL], \
OFOutOfRangeException) \
\
puts("Trying to add something after that error..."); \
p = [a getMemWithSize: 4096]; \
memset(p, 255, 4096); \
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
puts("Trying to remove more data than we added..."); \
CATCH_EXCEPTION([a removeNItems: [a items] + 1], \
OFOutOfRangeException); \
\
puts("Trying to access an index that does not exist..."); \
CATCH_EXCEPTION([a item: [a items]], OFOutOfRangeException); \
\
[a free]; \
\
puts("Creating new array and using it to build a string..."); \
a = [type newWithItemSize: 1]; \
\
for (i = 0; i < strlen(str); i++) \
[a add: (void*)&str[i]]; \
[a add: ""]; \
\
if (!strcmp([a data], str)) \
puts("Built string matches!"); \
else { \
puts("Built string does not match!"); \
abort(); \
} \
\
[a free];
int
main()
{
id a;
void *p, *q;
size_t i;
|
|
|
|
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
puts("Trying to remove more data than we added..."); \
CATCH_EXCEPTION([a removeNItems: [a items] + 1], \
OFOutOfRangeException); \
\
puts("Trying to access an index that does not exist..."); \
CATCH_EXCEPTION([a item: [a items]], OFOutOfRangeException); \
\
[a release]; \
\
puts("Creating new array and using it to build a string..."); \
a = [[type alloc] initWithItemSize: 1]; \
\
for (i = 0; i < strlen(str); i++) \
[a add: (void*)&str[i]]; \
[a add: ""]; \
\
if (!strcmp([a data], str)) \
puts("Built string matches!"); \
else { \
puts("Built string does not match!"); \
abort(); \
} \
\
[a release];
int
main()
{
id a;
void *p, *q;
size_t i;
|