diff --git a/test.cpp b/test.cpp index 31cc8aaa76bf42fdb4dc6543de315cb238634586_dGVzdC5jcHA=..5f7169fd763e38d3770e3ec5e54edcae50896287_dGVzdC5jcHA= 100644 --- a/test.cpp +++ b/test.cpp @@ -1613,6 +1613,66 @@ #define bMultiConcat(dst,...) bMultiConcatNeedNULLAsLastArgument((dst),##__VA_ARGS__,NULL) #define bMultiCatCstr(dst,...) bMultiCatCstrNeedNULLAsLastArgument((dst),##__VA_ARGS__,NULL) +#define bGlue3_aux(a,b,c) a ## b ## c +#define bGlue3(a,b,c) bGlue3_aux(a,b,c) + +#if defined(_MSC_VER) +#define _bDeclTbstrIdx(t,n,...) \ + static unsigned char bGlue3(_btmpuc_,t,n)[] = {__VA_ARGS__, '\0'}; \ + struct tagbstring t = { -32, sizeof(bGlue3(_btmpuc_,t,n))-1, bGlue3(_btmpuc_,t,n)} +#define bDeclTbstr(t,...) _bDeclTbstrIdx(t,__COUNTER__,__VA_ARGS__) +#else +#define bDeclTbstr(t,...) \ + static unsigned char bGlue3(_btmpuc_,t,__LINE__)[] = {__VA_ARGS__, '\0'}; \ + struct tagbstring t = { -__LINE__, sizeof(bGlue3(_btmpuc_,t,__LINE__))-1, bGlue3(_btmpuc_,t,__LINE__)} +#endif + +static int test32(void) { +bstring b1 = bfromStatic ("a"); +bstring b2 = bfromStatic ("e"); +bstring b3 = bfromStatic ("i"); +bstring b4 = bfromStatic (""); +int ret = 0; + + printf ("TEST: bMultiCatCstr, bMultiConcat\n"); + + bMultiCatCstr(b1, "b", "c", "d"); + bMultiCatCstr(b2, "f", "g", "h"); + bMultiCatCstr(b3, "j", "k", "l"); + bMultiConcat(b4, b1, b2, b3); + + ret += 1 != biseqStatic (b1, "abcd"); + ret += 1 != biseqStatic (b2, "efgh"); + ret += 1 != biseqStatic (b3, "ijkl"); + ret += 1 != biseqStatic (b4, "abcdefghijkl"); + + bdestroy (b1); + bdestroy (b2); + bdestroy (b3); + bdestroy (b4); + + printf ("\t# failures: %d\n", ret); + return ret; +} + +static int test33(void) { + bDeclTbstr (t1, 'H','e','l','l','o'); + bDeclTbstr (t2, 32,'w','o','r','l','d'); + bstring b = bfromStatic("["); + int ret; + + printf ("TEST: bDeclTbstr\n"); + + bconcat (b, &t1); + bconcat (b, &t2); + bcatStatic (b, "]"); + ret = 1 != biseqStatic (b, "[Hello world]"); + bdestroy (b); + + printf ("\t# failures: %d\n", ret); + return ret; +} + int main () { int ret = 0; @@ -1652,6 +1712,8 @@ ret += test29 (); ret += test30 (); ret += test31 (); + ret += test32 (); + ret += test33 (); printf ("# test failures: %d\n", ret);