From 94a3ec8ddc1b1cb408121364ff572e0669a1a116 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Sat, 10 Mar 2012 14:20:26 +0100 Subject: [PATCH 1/2] useful additions to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b758b9686793..f38385704bd9 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,5 @@ ARCH.* *.old avocsh libavocado.a +*.swp +tags From 0dd0feb8683904ccafd470b9c9d3fd5ba5212de6 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Sat, 10 Mar 2012 14:41:21 +0100 Subject: [PATCH 2/2] unit test from BasicC string-buffer --- UnitTests/string-buffer-test.c | 265 +++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 UnitTests/string-buffer-test.c diff --git a/UnitTests/string-buffer-test.c b/UnitTests/string-buffer-test.c new file mode 100644 index 000000000000..8e94e275ac9b --- /dev/null +++ b/UnitTests/string-buffer-test.c @@ -0,0 +1,265 @@ +#include "../BasicsC/string-buffer.h" +#include +#include +#include + +/* + * gcc -g -I . -L . -lavocado UnitTests/string-buffer-test.c && ./a.out + * from base dir. + */ + +static int tst_tst_cnt; +static int tst_err_cnt; + +#define STR "The quick brown fox jumped over the laxy dog" +#define STRSTR STR STR + +#define TWNTYA "aaaaaaaaaaaaaaaaaaaa" + +#define ABC "ABCDEFGHIJKLMNOP" +#define REP "REPDEFGHIJKLMNOP" +#define AEP "AEPDEFGHIJKLMNOP" + +static cmp_int (int should, int is, char * name) { + if (should != is) { + printf("'%s' failed! should: %d is: %d\n", name, should, is); + tst_err_cnt++; + } + tst_tst_cnt++; +} + +static cmp_ptr (const char * should, const char * is, char * name) { + if (should != is) { + printf("'%s' failed! should: %p is: %p\n", name, should, is); + tst_err_cnt++; + } + tst_tst_cnt++; +} +static cmp_str (char * should, char * is, size_t len, char * name) { + if (strncmp(should, is, len)) { + printf("'%s' failed! should: \n>>%s<< is: \n>>%s<<\n", name, should, is); + tst_err_cnt++; + } + tst_tst_cnt++; +} + +static cmp_bool (int value, char * name) { + if (!value) { + printf("'%s' failed! should be truish is: %d\n", name, value); + tst_err_cnt++; + } + tst_tst_cnt++; +} + +static void tst_str_append() { + int l1, l2; + + TRI_string_buffer_t sb, sb2; + TRI_InitStringBuffer(&sb); + TRI_AppendStringStringBuffer(&sb, STR); + TRI_AppendStringStringBuffer(&sb, STR); + l1 = strnlen( STRSTR, 1024); + l2 = strnlen( sb._buffer, 1024); + + cmp_int((int)l1, (int)l2, "basic append (len)"); + cmp_str(STRSTR, sb._buffer, l1, "basic append (cmp)"); + + TRI_AppendString2StringBuffer(&sb, ABC, 3); // ABC ... Z + + l2 = strnlen( sb._buffer, 1024); + cmp_str(STRSTR"ABC", sb._buffer, l2, "basic append 2 (cmp)"); + + TRI_ClearStringBuffer(&sb); + TRI_AppendStringStringBuffer(&sb, STR); + TRI_InitStringBuffer(&sb2); + TRI_AppendStringStringBuffer(&sb2, STR); + TRI_AppendStringBufferStringBuffer(&sb, &sb2); + + l2 = strnlen( sb._buffer, 1024); + cmp_str(STRSTR, sb._buffer, l2, "basic append 3 (cmp)"); + cmp_str(STR, sb2._buffer, l2, "basic append 4 (cmp)"); + + TRI_FreeStringBuffer(&sb); + +} + +static void tst_char_append() { + int l1, l2, i; + + TRI_string_buffer_t sb; + TRI_InitStringBuffer(&sb); + + for (i=0l; i!=20; ++i) { + TRI_AppendCharStringBuffer(&sb, 'a'); + } + + l1 = strnlen( TWNTYA, 1024); + l2 = strnlen( sb._buffer, 1024); + + cmp_int((int)l1, (int)l2, "char append (len)"); + cmp_str(TWNTYA, sb._buffer, l1, "char append (cmp)"); + + TRI_FreeStringBuffer(&sb); +} +static void tst_swp() { + int l1, l2, i; + + TRI_string_buffer_t sb1, sb2; + TRI_InitStringBuffer(&sb1); + TRI_InitStringBuffer(&sb2); + + for (i=0l; i!=20; ++i) { + TRI_AppendCharStringBuffer(&sb1, 'a'); + } + + TRI_AppendStringStringBuffer(&sb2, STR); + + TRI_SwapStringBuffer(&sb1, &sb2); + + l1 = strnlen( TWNTYA, 1024); + l2 = strnlen( STR, 1024); + + cmp_str(TWNTYA, sb2._buffer, l1, "swp test 1"); + cmp_str(STR, sb1._buffer, l2, "swp test 2"); + + TRI_FreeStringBuffer(&sb1); + TRI_FreeStringBuffer(&sb2); +} +static void tst_begin_end_empty_clear() { + int l1, i; + const char * ptr; + + TRI_string_buffer_t sb; + TRI_InitStringBuffer(&sb); + + TRI_AppendStringStringBuffer(&sb, STR); + + ptr = TRI_BeginStringBuffer(&sb); + cmp_ptr(sb._buffer, ptr, "begin test"); + + + l1 = strnlen(STR, 1024); + ptr = TRI_EndStringBuffer(&sb); + cmp_ptr(sb._buffer+l1, ptr, "end test"); + + cmp_bool((int)!TRI_EmptyStringBuffer(&sb), "empty 1"); + TRI_ClearStringBuffer(&sb); + cmp_bool((int)TRI_EmptyStringBuffer(&sb), "empty 2"); + + TRI_FreeStringBuffer(&sb); +} + +static void tst_cpy() { + int l1, l2, i; + + TRI_string_buffer_t sb1, sb2; + TRI_InitStringBuffer(&sb1); + TRI_InitStringBuffer(&sb2); + + for (i=0l; i!=20; ++i) { + TRI_AppendCharStringBuffer(&sb1, 'a'); + } + + TRI_AppendStringStringBuffer(&sb2, STR); + + TRI_CopyStringBuffer(&sb1, &sb2); + + l1 = strnlen( STR, 1024); + + cmp_int(l1, strnlen(sb1._buffer, l1) , "copy (len)"); + cmp_str(STR, sb2._buffer, l1, "cpy test 1"); + cmp_str(STR, sb1._buffer, l1, "cpy test 2"); + + TRI_FreeStringBuffer(&sb1); + TRI_FreeStringBuffer(&sb2); +} + +#define Z_2_T "0123456789A" +#define F_2_T "56789A" +#define Z_2_F "012345" +static void tst_erase_frnt() { + int l; + + TRI_string_buffer_t sb; + TRI_InitStringBuffer(&sb); + TRI_AppendStringStringBuffer(&sb, Z_2_T); + TRI_EraseFrontStringBuffer(&sb, 5); + + l = strnlen(sb._buffer, 1024); + cmp_str(F_2_T, sb._buffer, l, "erase front"); + + + TRI_EraseFrontStringBuffer(&sb, 15); + + cmp_bool(TRI_EmptyStringBuffer(&sb), "erase front2"); + + TRI_FreeStringBuffer(&sb); +} + +static void tst_replace () { + int l; + + TRI_string_buffer_t sb; + TRI_string_buffer_t sb2; + + TRI_InitStringBuffer(&sb); + TRI_AppendStringStringBuffer(&sb, ABC); + TRI_ReplaceStringStringBuffer(&sb, "REP", 3); + + l = strnlen(sb._buffer, 1024); + cmp_str(REP, sb._buffer, l, "replace1"); + + TRI_ReplaceStringStringBuffer(&sb, ABC, 1); + l = strnlen(sb._buffer, 1024); + cmp_str(AEP, sb._buffer, l, "replace2"); + + TRI_ClearStringBuffer(&sb); + TRI_AppendStringStringBuffer(&sb, ABC); + + TRI_InitStringBuffer(&sb2); + TRI_AppendStringStringBuffer(&sb2, "REP"); + + TRI_ReplaceStringBufferStringBuffer(&sb, &sb2); + l = strnlen(sb._buffer, 1024); + cmp_str(REP, sb._buffer, l, "replace stringbuffer 1"); + +// TRI_ClearStringBuffer(&sb2); +// TRI_AppendStringStringBuffer(&sb2, ABC); +// +// TRI_ReplaceStringBufferStringBuffer(&sb, &sb2, 1); +// l = strnlen(sb._buffer, 1024); +// cmp_str(AEP, sb._buffer, l, "replace stringbuffer 2"); + + +} + +#define ONETWOTHREE "123" +void tst_smpl_utils () { + // these are built on prev. tested building blocks... + TRI_string_buffer_t sb; + TRI_InitStringBuffer(&sb); + TRI_AppendInteger3StringBuffer(&sb, 123); + cmp_str(ONETWOTHREE, sb._buffer, 1024, "append int3"); + TRI_ClearStringBuffer(&sb); + TRI_AppendInteger3StringBuffer(&sb, 1234); + cmp_str("234", sb._buffer, 1024, "append int3"); + +} + +void tst_report () { + printf("%d test run. %d failed.\n", tst_tst_cnt, tst_err_cnt); +} + +int main () { + tst_str_append(); + tst_char_append(); + tst_swp(); + tst_begin_end_empty_clear(); + tst_cpy(); + tst_erase_frnt(); + tst_replace(); + tst_smpl_utils(); + tst_report(); + return 0; +} +