8000 Merge pull request #24 from a2800276/unit-test-string · arangodb/arangodb@6b628bb · GitHub
[go: up one dir, main page]

Skip to content

Commit 6b628bb

Browse files
committed
Merge pull request #24 from a2800276/unit-test-string
Unit test string-buffer
2 parents 4ccbe1f + 0dd0feb commit 6b628bb

File tree

2 files changed

+267
-0
lines changed

2 files changed

+267
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,5 @@ ARCH.*
5959
*.old
6060
avocsh
6161
libavocado.a
62+
*.swp
63+
tags

UnitTests/string-buffer-test.c

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,265 @@
1+
#include "../BasicsC/string-buffer.h"
2+
#include <assert.h>
3+
#include <string.h>
4+
#include <stdio.h>
5+
6+
/*
7+
* gcc -g -I . -L . -lavocado UnitTests/string-buffer-test.c && ./a.out
8+
* from base dir.
9+
*/
10+
11+
static int tst_tst_cnt;
12+
static int tst_err_cnt;
13+
14+
#define STR "The quick brown fox jumped over the laxy dog"
15+
#define STRSTR STR STR
16+
17+
#define TWNTYA "aaaaaaaaaaaaaaaaaaaa"
18+
19+
#define ABC "ABCDEFGHIJKLMNOP"
20+
#define REP "REPDEFGHIJKLMNOP"
21+
#define AEP "AEPDEFGHIJKLMNOP"
22+
23+
static cmp_int (int should, int is, char * name) {
24+
if (should != is) {
25+
printf("'%s' failed! should: %d is: %d\n", name, should, is);
26+
tst_err_cnt++;
27+
}
28+
tst_tst_cnt++;
29+
}
30+
31+
static cmp_ptr (const char * should, const char * is, char * name) {
32+
if (should != is) {
33+
printf("'%s' failed! should: %p is: %p\n", name, should, is);
34+
tst_err_cnt++;
35+
}
36+
tst_tst_cnt++;
37+
}
38+
static cmp_str (char * should, char * is, size_t len, char * name) {
39+
if (strncmp(should, is, len)) {
40+
printf("'%s' failed! should: \n>>%s<< is: \n>>%s<<\n", name, should, is);
41+
tst_err_cnt++;
42+
}
43+
tst_tst_cnt++;
44+
}
45+
46+
static cmp_bool (int value, char * name) {
47+
if (!value) {
48+
printf("'%s' failed! should be truish is: %d\n", name, value);
49+
tst_err_cnt++;
50+
}
51+
tst_tst_cnt++;
52+
}
53+
54+
static void tst_str_append() {
55+
int l1, l2;
56+
57+
TRI_string_buffer_t sb, sb2;
58+
TRI_InitStringBuffer(&sb);
59+
TRI_AppendStringStringBuffer(&sb, STR);
60+
TRI_AppendStringStringBuffer(&sb, STR);
61+
l1 = strnlen( STRSTR, 1024);
62+
l2 = strnlen( sb._buffer, 1024);
63+
64+
cmp_int((int)l1, (int)l2, "basic append (len)");
65+
cmp_str(STRSTR, sb._buffer, l1, "basic append (cmp)");
66+
67+
TRI_AppendString2StringBuffer(&sb, ABC, 3); // ABC ... Z
68+
69+
l2 = strnlen( sb._buffer, 1024);
70+
cmp_str(STRSTR"ABC", sb._buffer, l2, "basic append 2 (cmp)");
71+
72+
TRI_ClearStringBuffer(&sb);
73+
TRI_AppendStringStringBuffer(&sb, STR);
74+
TRI_InitStringBuffer(&sb2);
75+
TRI_AppendStringStringBuffer(&sb2, STR);
76+
TRI_AppendStringBufferStringBuffer(&sb, &sb2);
77+
78+
l2 = strnlen( sb._buffer, 1024);
79+
cmp_str(STRSTR, sb._buffer, l2, "basic append 3 (cmp)");
80+
cmp_str(STR, sb2._buffer, l2, "basic append 4 (cmp)");
81+
82+
TRI_FreeStringBuffer(&sb);
83+
84+
}
85+
86+
static void tst_char_append() {
87+
int l1, l2, i;
88+
89+
TRI_string_buffer_t sb;
90+
TRI_InitStringBuffer(&sb);
91+
92+
for (i=0l; i!=20; ++i) {
93+
TRI_AppendCharStringBuffer(&sb, 'a');
94+
}
95+
96+
l1 = strnlen( TWNTYA, 1024);
97+
l2 = strnlen( sb._buffer, 1024);
98+
99+
cmp_int((int)l1, (int)l2, "char append (len)");
100+
cmp_str(TWNTYA, sb._buffer, l1, "char append (cmp)");
101+
102+
TRI_FreeStringBuffer(&sb);
103+
}
104+
static void tst_swp() {
105+
int l1, l2, i;
106+
107+
TRI_string_buffer_t sb1, sb2;
108+
TRI_InitStringBuffer(&sb1);
109+
TRI_InitStringBuffer(&sb2);
110+
111+
for (i=0l; i!=20; ++i) {
112+
TRI_AppendCharStringBuffer(&sb1, 'a');
113+
}
114+
115+
TRI_AppendStringStringBuffer(&sb2, STR);
116+
117+
TRI_SwapStringBuffer(&sb1, &sb2);
118+
119+
l1 = strnlen( TWNTYA, 1024);
120+
l2 = strnlen( STR, 1024);
121+
122+
cmp_str(TWNTYA, sb2._buffer, l1, "swp test 1");
123+
cmp_str(STR, sb1._buffer, l2, "swp test 2");
124+
125+
TRI_FreeStringBuffer(&sb1);
126+
TRI_FreeStringBuffer(&sb2);
127+
}
128+
static void tst_begin_end_empty_clear() {
129+
int l1, i;
130+
const char * ptr;
131+
132+
TRI_string_buffer_t sb;
133+
TRI_InitStringBuffer(&sb);
134+
135+
TRI_AppendStringStringBuffer(&sb, STR);
136+
137+
ptr = TRI_BeginStringBuffer(&sb);
138+
cmp_ptr(sb._buffer, ptr, "begin test");
139+
140+
141+
l1 = strnlen(STR, 1024);
142+
ptr = TRI_EndStringBuffer(&sb);
143+
cmp_ptr(sb._buffer+l1, ptr, "end test");
144+
145+
cmp_bool((int)!TRI_EmptyStringBuffer(&sb), "empty 1");
146+
TRI_ClearStringBuffer(&sb);
147+
cmp_bool((int)TRI_EmptyStringBuffer(&sb), "empty 2");
148+
149+
TRI_FreeStringBuffer(&sb);
150+
}
151+
152+
static void tst_cpy() {
153+
int l1, l2, i;
154+
155+
TRI_string_buffer_t sb1, sb2;
156+
TRI_InitStringBuffer(&sb1);
157+
TRI_InitStringBuffer(&sb2);
158+
159+
for (i=0l; i!=20; ++i) {
160+
TRI_AppendCharStringBuffer(&sb1, 'a');
161+
}
162+
163+
TRI_AppendStringStringBuffer(&sb2, STR);
164+
165+
TRI_CopyStringBuffer(&sb1, &sb2);
166+
167+
l1 = strnlen( STR, 1024);
168+
169+
cmp_int(l1, strnlen(sb1._buffer, l1) , "copy (len)");
170+
cmp_str(STR, sb2._buffer, l1, "cpy test 1");
171+
cmp_str(STR, sb1._buffer, l1, "cpy test 2");
172+
173+
TRI_FreeStringBuffer(&sb1);
174+
TRI_FreeStringBuffer(&sb2);
175+
}
176+
177+
#define Z_2_T "0123456789A"
178+
#define F_2_T "56789A"
179+
#define Z_2_F "012345"
180+
static void tst_erase_frnt() {
181+
int l;
182+
183+
TRI_string_buffer_t sb;
184+
TRI_InitStringBuffer(&sb);
185+
TRI_AppendStringStringBuffer(&sb, Z_2_T);
186+
TRI_EraseFrontStringBuffer(&sb, 5);
187+
188+
l = strnlen(sb._buffer, 1024);
189+
cmp_str(F_2_T, sb._buffer, l, "erase front");
190+
191+
192+
TRI_EraseFrontStringBuffer(&sb, 15);
193+
194+
cmp_bool(TRI_EmptyStringBuffer(&sb), "erase front2");
195+
196+
TRI_FreeStringBuffer(&sb);
197+
}
198+
199+
static void tst_replace () {
200+
int l;
201+
202+
TRI_string_buffer_t sb;
203+
TRI_string_buffer_t sb2;
204+
205+
TRI_InitStringBuffer(&sb);
206+
TRI_AppendStringStringBuffer(&sb, ABC);
207+
TRI_ReplaceStringStringBuffer(&sb, "REP", 3);
208+
209+
l = strnlen(sb._buffer, 1024);
210+
cmp_str(REP, sb._buffer, l, "replace1");
211+
212+
TRI_ReplaceStringStringBuffer(&sb, ABC, 1);
213+
l = strnlen(sb._buffer, 1024);
214+
cmp_str(AEP, sb._buffer, l, "replace2");
215+
216+
TRI_ClearStringBuffer(&sb);
217+
TRI_AppendStringStringBuffer(&sb, ABC);
218+
219+
TRI_InitStringBuffer(&sb2);
220+
TRI_AppendStringStringBuffer(&sb2, "REP");
221+
222+
TRI_ReplaceStringBufferStringBuffer(&sb, &sb2);
223+
l = strnlen(sb._buffer, 1024);
224+
cmp_str(REP, sb._buffer, l, "replace stringbuffer 1");
225+
226+
// TRI_ClearStringBuffer(&sb2);
227+
// TRI_AppendStringStringBuffer(&sb2, ABC);
228+
//
229+
// TRI_ReplaceStringBufferStringBuffer(&sb, &sb2, 1);
230+
// l = strnlen(sb._buffer, 1024);
231+
// cmp_str(AEP, sb._buffer, l, "replace stringbuffer 2");
232+
233+
234+
}
235+
236+
#define ONETWOTHREE "123"
237+
void tst_smpl_utils () {
238+
// these are built on prev. tested building blocks...
239+
TRI_string_buffer_t sb;
240+
TRI_InitStringBuffer(&sb);
241+
TRI_AppendInteger3StringBuffer(&sb, 123);
242+
cmp_str(ONETWOTHREE, sb._buffer, 1024, "append int3");
243+
TRI_ClearStringBuffer(&sb);
244+
TRI_AppendInteger3StringBuffer(&sb, 1234);
245+
cmp_str("234", sb._buffer, 1024, "append int3");
246+
247+
}
248+
249+
void tst_report () {
250+
printf("%d test run. %d failed.\n", tst_tst_cnt, tst_err_cnt);
251+
}
252+
253+
int main () {
254+
tst_str_append();
255+
tst_char_append();
256+
tst_swp();
257+
tst_begin_end_empty_clear();
258+
tst_cpy();
259+
tst_erase_frnt();
260+
tst_replace();
261+
tst_smpl_utils();
262+
tst_report();
263+
return 0;
264+
}
265+

0 commit comments

Comments
 (0)
0