summaryrefslogtreecommitdiff
path: root/libmisc/tests/test_fmt.c
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-05-30 14:07:00 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-05-30 14:07:00 -0600
commit691d3fe7ff920e8113d174c2ce6c3126000a2f82 (patch)
tree827a1e09e6a7dfe1cf20277e95ec503f1e2fef80 /libmisc/tests/test_fmt.c
parentbf3667b8b76eefd95e33e32b4f5abbf2de0e2065 (diff)
parent9c0b5f1f0b2009ab628400e10c18ec64ede696d8 (diff)
Merge branch 'lukeshu/more-coverage'
Diffstat (limited to 'libmisc/tests/test_fmt.c')
-rw-r--r--libmisc/tests/test_fmt.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/libmisc/tests/test_fmt.c b/libmisc/tests/test_fmt.c
index 6a6eb7c..a9157d6 100644
--- a/libmisc/tests/test_fmt.c
+++ b/libmisc/tests/test_fmt.c
@@ -62,6 +62,26 @@ int main() {
test_assert(strcmp(str, "\"hell\"") == 0);
memset(str, 0, sizeof(str));
+ do_print((qstr, "hello\xFFworld🚧"));
+ test_assert(strcmp(str, "\"hello\\xFFworld\\U0001F6A7\"") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qstr, "¡hello world!"));
+ test_assert(strcmp(str, "\"\\u00A1hello world!\"") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qmem, "🚧", 3)); /* truncated UTF-8 */
+ test_assert(strcmp(str, "\"\\xF0\\x9F\\x9A\"") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qmem, "\xF7\xBF\xBF\xBF", 4)); /* over unicode_max */
+ test_assert(strcmp(str, "\"\\xF7\\xBF\\xBF\\xBF\"") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qmem, "\xE0\xA0", 2)); /* non-optimal encoding (of ' ') */
+ test_assert(strcmp(str, "\"\\xE0\\xA0\"") == 0);
+ memset(str, 0, sizeof(str));
+
do_print((byte, 'h'), (byte, 'w'));
test_assert(strcmp(str, "hw") == 0);
memset(str, 0, sizeof(str));
@@ -70,6 +90,26 @@ int main() {
test_assert(strcmp(str, "'h''w'") == 0);
memset(str, 0, sizeof(str));
+ do_print((qbyte, 0));
+ test_assert(strcmp(str, "'\\0'") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qbyte, '\\'));
+ test_assert(strcmp(str, "'\\\\'") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qbyte, '\''));
+ test_assert(strcmp(str, "'\\''") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qbyte, '\n'));
+ test_assert(strcmp(str, "'\\n'") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((qbyte, 0xff));
+ test_assert(strcmp(str, "'\\xFF'") == 0);
+ memset(str, 0, sizeof(str));
+
do_print("zero ", 0);
test_assert(strcmp(str, "zero 0") == 0);
memset(str, 0, sizeof(str));
@@ -166,5 +206,29 @@ int main() {
test_assert(strcmp(str, " 1x") == 0);
memset(str, 0, sizeof(str));
+ do_print((base16_u8_, 1));
+ test_assert(strcmp(str, "0x01") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((base16_u16_, 1));
+ test_assert(strcmp(str, "0x0001") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((base16_u32_, 1));
+ test_assert(strcmp(str, "0x00000001") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((base16_u64_, 1));
+ test_assert(strcmp(str, "0x0000000000000001") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((hbyte, 1));
+ test_assert(strcmp(str, "0x01") == 0);
+ memset(str, 0, sizeof(str));
+
+ do_print((hmem, "hello", 6));
+ test_assert(strcmp(str, "{0x68,0x65,0x6C,0x6C,0x6F,0x00}") == 0);
+ memset(str, 0, sizeof(str));
+
return 0;
}