comparison tests.c @ 465:6d44592cdab1

Improve tests slightly.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 02 Jun 2018 03:54:14 +0300
parents 85fa3d333556
children fe5b803ae449
comparison
equal deleted inserted replaced
464:761724e01c02 465:6d44592cdab1
308 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ 308 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \
309 test_result(&ctx, fun (str1, str2) == ret); \ 309 test_result(&ctx, fun (str1, str2) == ret); \
310 test_end(&ctx); \ 310 test_end(&ctx); \
311 } while (0) 311 } while (0)
312 312
313 #define TEST2C(fun, str1, str2, ret) do { \
314 test_ctx ctx; test_init(&ctx); \
315 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \
316 test_result(&ctx, (fun (str1, str2) != NULL) == ret); \
317 test_end(&ctx); \
318 } while (0)
319
313 #define TEST3(fun, str1, str2, len, ret) do { \ 320 #define TEST3(fun, str1, str2, len, ret) do { \
314 test_ctx ctx; test_init(&ctx); \ 321 test_ctx ctx; test_init(&ctx); \
315 test_start(&ctx, # fun "('%s', '%s', %d)", str1, str2, len); \ 322 test_start(&ctx, # fun "('%s', '%s', %d)", str1, str2, len); \
316 test_result(&ctx, ( fun (str1, str2, len) == 0) == ret); \ 323 test_result(&ctx, ( fun (str1, str2, len) == 0) == ret); \
317 test_end(&ctx); \ 324 test_end(&ctx); \
325 char buf[64], buf2[64]; 332 char buf[64], buf2[64];
326 333
327 // 334 //
328 // Initialization 335 // Initialization
329 // 336 //
330 th_init("th-test", "th-libs unit tests", "0.0.1", NULL, NULL); 337 th_init("th-test", "th-libs unit tests", "0.1", NULL, NULL);
331 th_verbosityLevel = 0; 338 th_verbosityLevel = 0;
332 339
333 if (sizeof(char) != sizeof(unsigned char)) 340 if (sizeof(char) != sizeof(unsigned char))
334 { 341 {
335 THERR("sizeof(char) != sizeof(unsigned char)???\n"); 342 THERR("sizeof(char) != sizeof(unsigned char)???\n");
440 } 447 }
441 448
442 // 449 //
443 // String matching functions 450 // String matching functions
444 // 451 //
445 if (test_set_start("String matching #1")) 452 if (test_set_start("String compare #1"))
446 { 453 {
447 TEST2(th_strcasecmp, "aSdFq", "asdfq", TRUE); 454 TEST2(th_strcasecmp, "aSdFq", "asdfq", TRUE);
448 TEST2(th_strcasecmp, "aSdFq", "asFfq", FALSE); 455 TEST2(th_strcasecmp, "aSdFq", "asFfq", FALSE);
449 TEST2(th_strcasecmp, "abcde", "abcde", TRUE); 456 TEST2(th_strcasecmp, "abcde", "abcde", TRUE);
450 TEST2(th_strcasecmp, "öäå", "öäå", TRUE); 457 TEST2(th_strcasecmp, "öäå", "öäå", TRUE);
451 TEST2(th_strcasecmp, "aöäå", "aöäå", TRUE); 458 TEST2(th_strcasecmp, "aöäå", "aöäå", TRUE);
452 } 459 }
453 460
454 if (test_set_start("String matching #2")) 461 if (test_set_start("String compare #2"))
455 { 462 {
456 TEST3(th_strncasecmp, "aSdFq", "asFfqB", 4, FALSE); 463 TEST3(th_strncasecmp, "aSdFq", "asFfqB", 4, FALSE);
457 TEST3(th_strncasecmp, "aSdFq", "asFfqQ", 2, TRUE); 464 TEST3(th_strncasecmp, "aSdFq", "asFfqQ", 2, TRUE);
458 TEST3(th_strncasecmp, "aSdFq", "asDfq", 3, TRUE); 465 TEST3(th_strncasecmp, "aSdFq", "asDfq", 3, TRUE);
459 TEST3(th_strncasecmp, "aSdFq", "asDfq", 2, TRUE); 466 TEST3(th_strncasecmp, "aSdFq", "asDfq", 2, TRUE);
460 TEST3(th_strncasecmp, "aSdFq", "asDfq", 0, TRUE); 467 TEST3(th_strncasecmp, "aSdFq", "asDfq", 0, TRUE);
461 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 0, TRUE); 468 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 0, TRUE);
462 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 1, FALSE); 469 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 1, FALSE);
463 } 470 }
464 471
465 if (test_set_start("String matching #3")) 472 if (test_set_start("String compare #3"))
473 {
474 TEST2C(th_strrcasecmp, "foo aSdFq", " asdfq", TRUE);
475 TEST2C(th_strrcasecmp, "aSdFq", " asdfq", FALSE);
476 TEST2C(th_strrcasecmp, "foo aSdFq baz", "asdfq", FALSE);
477 }
478
479 if (test_set_start("String matching #1"))
466 { 480 {
467 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lol", TRUE); 481 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lol", TRUE);
468 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo*", TRUE); 482 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo*", TRUE);
469 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo", FALSE); 483 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo", FALSE);
470 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba", FALSE); 484 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba", FALSE);
472 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba*", TRUE); 486 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba*", TRUE);
473 TEST2B(th_strmatch, "abba ABBAkukka lol", "abbak*", FALSE); 487 TEST2B(th_strmatch, "abba ABBAkukka lol", "abbak*", FALSE);
474 TEST2B(th_strmatch, "abba ABBAöökukka lol", "*abbaö?", FALSE); 488 TEST2B(th_strmatch, "abba ABBAöökukka lol", "*abbaö?", FALSE);
475 } 489 }
476 490
477 if (test_set_start("String matching #4")) 491 if (test_set_start("String matching #2"))
478 { 492 {
479 TEST2B(th_strcasematch, "abba ABBAkukka lol", "abbak*", FALSE); 493 TEST2B(th_strcasematch, "abba ABBAkukka lol", "abbak*", FALSE);
480 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak*", TRUE); 494 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak*", TRUE);
481 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*ab?ak*", TRUE); 495 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*ab?ak*", TRUE);
482 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak?", FALSE); 496 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak?", FALSE);