diff options
Diffstat (limited to 'tests/utility_string_tests.c')
-rw-r--r-- | tests/utility_string_tests.c | 170 |
1 files changed, 88 insertions, 82 deletions
diff --git a/tests/utility_string_tests.c b/tests/utility_string_tests.c index d7601931..add1e640 100644 --- a/tests/utility_string_tests.c +++ b/tests/utility_string_tests.c @@ -17,103 +17,109 @@ /* Test string concatenation */ static void StrncatTest(void) { - char dest[128]; - - /* Null inputs */ - TEST_EQ(0, StrnAppend(dest, NULL, sizeof(dest)), "StrnAppend('', null)"); - TEST_EQ(0, StrnAppend(NULL, "Hey!", sizeof(dest)), "StrnAppend(null, '')"); - - /* Empty <-- empty */ - *dest = 0; - TEST_EQ(0, StrnAppend(dest, "", sizeof(dest)), "StrnAppend('', '')"); - TEST_EQ(0, strcmp(dest, ""), "StrnAppend('', '') result"); - - /* Nonempty <-- empty */ - strcpy(dest, "Bob"); - TEST_EQ(3, StrnAppend(dest, "", sizeof(dest)), "StrnAppend(B, '')"); - TEST_EQ(0, strcmp(dest, "Bob"), "StrnAppend(B, '') result"); - - /* Empty <-- nonempty */ - *dest = 0; - TEST_EQ(5, StrnAppend(dest, "Alice", sizeof(dest)), "StrnAppend('', A)"); - TEST_EQ(0, strcmp(dest, "Alice"), "StrnAppend('', A) result"); - - /* Nonempty <-- nonempty */ - strcpy(dest, "Tigre"); - TEST_EQ(10, StrnAppend(dest, "Bunny", sizeof(dest)), "StrnAppend(T, B)"); - TEST_EQ(0, strcmp(dest, "TigreBunny"), "StrnAppend(T, B) result"); - - /* Test clipping */ - strcpy(dest, "YesI"); - TEST_EQ(7, StrnAppend(dest, "Can't", 8), "StrnAppend(Y, over)"); - TEST_EQ(0, strcmp(dest, "YesICan"), "StrnAppend(Y, over) result"); - - /* Test clipping if dest already overflows its claimed length */ - strcpy(dest, "BudgetDeficit"); - TEST_EQ(6, StrnAppend(dest, "Spending", 7), "StrnAppend(over, over)"); - TEST_EQ(0, strcmp(dest, "Budget"), "StrnAppend(over, over) result"); + char dest[128]; + + /* Null inputs */ + TEST_EQ(0, StrnAppend(dest, NULL, sizeof(dest)), + "StrnAppend('', null)"); + TEST_EQ(0, StrnAppend(NULL, "Hey!", sizeof(dest)), + "StrnAppend(null, '')"); + + /* Empty <-- empty */ + *dest = 0; + TEST_EQ(0, StrnAppend(dest, "", sizeof(dest)), "StrnAppend('', '')"); + TEST_EQ(0, strcmp(dest, ""), "StrnAppend('', '') result"); + + /* Nonempty <-- empty */ + strcpy(dest, "Bob"); + TEST_EQ(3, StrnAppend(dest, "", sizeof(dest)), "StrnAppend(B, '')"); + TEST_EQ(0, strcmp(dest, "Bob"), "StrnAppend(B, '') result"); + + /* Empty <-- nonempty */ + *dest = 0; + TEST_EQ(5, StrnAppend(dest, "Alice", sizeof(dest)), + "StrnAppend('', A)"); + TEST_EQ(0, strcmp(dest, "Alice"), "StrnAppend('', A) result"); + + /* Nonempty <-- nonempty */ + strcpy(dest, "Tigre"); + TEST_EQ(10, StrnAppend(dest, "Bunny", sizeof(dest)), + "StrnAppend(T, B)"); + TEST_EQ(0, strcmp(dest, "TigreBunny"), "StrnAppend(T, B) result"); + + /* Test clipping */ + strcpy(dest, "YesI"); + TEST_EQ(7, StrnAppend(dest, "Can't", 8), "StrnAppend(Y, over)"); + TEST_EQ(0, strcmp(dest, "YesICan"), "StrnAppend(Y, over) result"); + + /* Test clipping if dest already overflows its claimed length */ + strcpy(dest, "BudgetDeficit"); + TEST_EQ(6, StrnAppend(dest, "Spending", 7), "StrnAppend(over, over)"); + TEST_EQ(0, strcmp(dest, "Budget"), "StrnAppend(over, over) result"); } static void TestU64ToS(uint64_t value, uint32_t radix, uint32_t zero_pad_width, - const char *expect) { - char dest[UINT64_TO_STRING_MAX]; - - TEST_EQ(strlen(expect), - Uint64ToString(dest, sizeof(dest), value, radix, zero_pad_width), - "Uint64ToString"); - printf("Uint64ToString expect %s got %s\n", expect, dest); - TEST_EQ(0, strcmp(dest, expect), "Uint64ToString result"); + const char *expect) { + char dest[UINT64_TO_STRING_MAX]; + + TEST_EQ(strlen(expect), + Uint64ToString(dest, sizeof(dest), value, radix, + zero_pad_width), + "Uint64ToString"); + printf("Uint64ToString expect %s got %s\n", expect, dest); + TEST_EQ(0, strcmp(dest, expect), "Uint64ToString result"); } /* Test uint64 to string conversion */ static void Uint64ToStringTest(void) { - char dest[UINT64_TO_STRING_MAX]; - - /* Test invalid inputs */ - TEST_EQ(0, Uint64ToString(NULL, 8, 123, 10, 8), "Uint64ToString null dest"); - TestU64ToS(0, 1, 0, ""); - TestU64ToS(0, 37, 0, ""); - - /* Binary */ - TestU64ToS(0, 2, 0, "0"); - TestU64ToS(0x9A, 2, 0, "10011010"); - TestU64ToS(0x71, 2, 12, "000001110001"); - TestU64ToS( - ~0ULL, 2, 0, - "1111111111111111111111111111111111111111111111111111111111111111"); - - /* Decimal */ - TestU64ToS(0, 10, 0, "0"); - TestU64ToS(12345, 10, 0, "12345"); - TestU64ToS(67890, 10, 8, "00067890"); - TestU64ToS(~0ULL, 10, 0, "18446744073709551615"); - - /* Hex */ - TestU64ToS(0, 16, 0, "0"); - TestU64ToS(0x12345678, 16, 0, "12345678"); - TestU64ToS(0x9ABCDEF, 16, 8, "09abcdef"); - TestU64ToS(~0ULL, 16, 0, "ffffffffffffffff"); - - /* Zero pad corner cases */ - /* Don't pad if over length */ - TestU64ToS(0x1234567890ULL, 16, 8, "1234567890"); - /* Fail if padding won't fit in buffer */ - TEST_EQ(0, Uint64ToString(dest, 8, 123, 10, 8), "Uint64ToString bad pad"); - TEST_EQ(0, strcmp(dest, ""), "Uint64ToString bad pad result"); + char dest[UINT64_TO_STRING_MAX]; + + /* Test invalid inputs */ + TEST_EQ(0, Uint64ToString(NULL, 8, 123, 10, 8), + "Uint64ToString null dest"); + TestU64ToS(0, 1, 0, ""); + TestU64ToS(0, 37, 0, ""); + + /* Binary */ + TestU64ToS(0, 2, 0, "0"); + TestU64ToS(0x9A, 2, 0, "10011010"); + TestU64ToS(0x71, 2, 12, "000001110001"); + TestU64ToS(~0ULL, 2, 0, + "1111111111111111111111111111111111111111111111111111111111111111"); + + /* Decimal */ + TestU64ToS(0, 10, 0, "0"); + TestU64ToS(12345, 10, 0, "12345"); + TestU64ToS(67890, 10, 8, "00067890"); + TestU64ToS(~0ULL, 10, 0, "18446744073709551615"); + + /* Hex */ + TestU64ToS(0, 16, 0, "0"); + TestU64ToS(0x12345678, 16, 0, "12345678"); + TestU64ToS(0x9ABCDEF, 16, 8, "09abcdef"); + TestU64ToS(~0ULL, 16, 0, "ffffffffffffffff"); + + /* Zero pad corner cases */ + /* Don't pad if over length */ + TestU64ToS(0x1234567890ULL, 16, 8, "1234567890"); + /* Fail if padding won't fit in buffer */ + TEST_EQ(0, Uint64ToString(dest, 8, 123, 10, 8), + "Uint64ToString bad pad"); + TEST_EQ(0, strcmp(dest, ""), "Uint64ToString bad pad result"); } int main(int argc, char* argv[]) { - int error_code = 0; + int error_code = 0; - StrncatTest(); - Uint64ToStringTest(); + StrncatTest(); + Uint64ToStringTest(); - if (!gTestSuccess) - error_code = 255; + if (!gTestSuccess) + error_code = 255; - return error_code; + return error_code; } |