test-format-table: add smoke test for int/uint formatting

When looking at coverage data, I noticed that some types of ints have no
coverage whatsoever.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2024-12-03 15:00:26 +01:00
parent 5c74c26db9
commit e0be4dc563
+125
View File
@@ -578,6 +578,131 @@ TEST(table) {
"5min 5min \n");
}
TEST(signed_integers) {
_cleanup_(table_unrefp) Table *t = NULL;
_cleanup_free_ char *formatted = NULL;
ASSERT_NOT_NULL(t = table_new("int", "int8", "int16", "int32", "int64"));
table_set_width(t, 0);
ASSERT_OK(table_add_many(t,
TABLE_INT, -1,
TABLE_INT8, INT8_C(-1),
TABLE_INT16, INT16_C(-1),
TABLE_INT32, INT32_C(-1),
TABLE_INT64, INT64_C(-1)));
ASSERT_OK(table_add_many(t,
TABLE_INT, INT_MAX,
TABLE_INT8, INT8_MAX,
TABLE_INT16, INT16_MAX,
TABLE_INT32, INT32_MAX,
TABLE_INT64, INT64_MAX));
ASSERT_OK(table_add_many(t,
TABLE_INT, INT_MIN,
TABLE_INT8, INT8_MIN,
TABLE_INT16, INT16_MIN,
TABLE_INT32, INT32_MIN,
TABLE_INT64, INT64_MIN));
ASSERT_OK(table_format(t, &formatted));
printf("%s\n", formatted);
ASSERT_STREQ(formatted,
"INT INT8 INT16 INT32 INT64\n"
"-1 -1 -1 -1 -1\n"
"2147483647 127 32767 2147483647 9223372036854775807\n"
"-2147483648 -128 -32768 -2147483648 -9223372036854775808\n");
_cleanup_(sd_json_variant_unrefp) sd_json_variant *a = NULL, *b = NULL;
ASSERT_OK(table_to_json(t, &a));
table_print_json(t, /*f=*/ NULL, SD_JSON_FORMAT_NEWLINE);
ASSERT_OK(sd_json_build(&b,
SD_JSON_BUILD_ARRAY(
SD_JSON_BUILD_OBJECT(
SD_JSON_BUILD_PAIR("int", SD_JSON_BUILD_INTEGER(-1)),
SD_JSON_BUILD_PAIR("int8", SD_JSON_BUILD_INTEGER(-1)),
SD_JSON_BUILD_PAIR("int16", SD_JSON_BUILD_INTEGER(-1)),
SD_JSON_BUILD_PAIR("int32", SD_JSON_BUILD_INTEGER(-1)),
SD_JSON_BUILD_PAIR("int64", SD_JSON_BUILD_INTEGER(-1))),
SD_JSON_BUILD_OBJECT(
SD_JSON_BUILD_PAIR("int", SD_JSON_BUILD_INTEGER(INT_MAX)),
SD_JSON_BUILD_PAIR("int8", SD_JSON_BUILD_INTEGER(INT8_MAX)),
SD_JSON_BUILD_PAIR("int16", SD_JSON_BUILD_INTEGER(INT16_MAX)),
SD_JSON_BUILD_PAIR("int32", SD_JSON_BUILD_INTEGER(INT32_MAX)),
SD_JSON_BUILD_PAIR("int64", SD_JSON_BUILD_INTEGER(INT64_MAX))),
SD_JSON_BUILD_OBJECT(
SD_JSON_BUILD_PAIR("int", SD_JSON_BUILD_INTEGER(INT_MIN)),
SD_JSON_BUILD_PAIR("int8", SD_JSON_BUILD_INTEGER(INT8_MIN)),
SD_JSON_BUILD_PAIR("int16", SD_JSON_BUILD_INTEGER(INT16_MIN)),
SD_JSON_BUILD_PAIR("int32", SD_JSON_BUILD_INTEGER(INT32_MIN)),
SD_JSON_BUILD_PAIR("int64", SD_JSON_BUILD_INTEGER(INT64_MIN))))));
sd_json_variant_dump(b, SD_JSON_FORMAT_NEWLINE, stdout, NULL);
ASSERT_TRUE(sd_json_variant_equal(a, b));
}
TEST(unsigned_integers) {
_cleanup_(table_unrefp) Table *t = NULL;
_cleanup_free_ char *formatted = NULL;
ASSERT_NOT_NULL(t = table_new("uint", "uint8", "uint16", "uint32", "uhex32", "uint64", "uhex64"));
table_set_width(t, 0);
ASSERT_OK(table_add_many(t,
TABLE_UINT, 0,
TABLE_UINT8, UINT8_C(0),
TABLE_UINT16, UINT16_C(0),
TABLE_UINT32, UINT32_C(0),
TABLE_UINT32_HEX, UINT32_C(0),
TABLE_UINT64, UINT64_C(0),
TABLE_UINT64_HEX, UINT64_C(0)));
ASSERT_OK(table_add_many(t,
TABLE_UINT, UINT_MAX,
TABLE_UINT8, UINT8_MAX,
TABLE_UINT16, UINT16_MAX,
TABLE_UINT32, UINT32_MAX,
TABLE_UINT32_HEX, UINT32_MAX,
TABLE_UINT64, UINT64_MAX,
TABLE_UINT64_HEX, UINT64_MAX));
ASSERT_OK(table_format(t, &formatted));
printf("%s\n", formatted);
ASSERT_STREQ(formatted,
"UINT UINT8 UINT16 UINT32 UHEX32 UINT64 UHEX64\n"
"0 0 0 0 0 0 0\n"
"4294967295 255 65535 4294967295 ffffffff 18446744073709551615 ffffffffffffffff\n");
_cleanup_(sd_json_variant_unrefp) sd_json_variant *a = NULL, *b = NULL;
ASSERT_OK(table_to_json(t, &a));
table_print_json(t, /*f=*/ NULL, SD_JSON_FORMAT_NEWLINE);
ASSERT_OK(sd_json_build(&b,
SD_JSON_BUILD_ARRAY(
SD_JSON_BUILD_OBJECT(
SD_JSON_BUILD_PAIR("uint", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uint8", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uint16", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uint32", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uhex32", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uint64", SD_JSON_BUILD_UNSIGNED(0)),
SD_JSON_BUILD_PAIR("uhex64", SD_JSON_BUILD_UNSIGNED(0))),
SD_JSON_BUILD_OBJECT(
SD_JSON_BUILD_PAIR("uint", SD_JSON_BUILD_UNSIGNED(UINT_MAX)),
SD_JSON_BUILD_PAIR("uint8", SD_JSON_BUILD_UNSIGNED(UINT8_MAX)),
SD_JSON_BUILD_PAIR("uint16", SD_JSON_BUILD_UNSIGNED(UINT16_MAX)),
SD_JSON_BUILD_PAIR("uint32", SD_JSON_BUILD_UNSIGNED(UINT32_MAX)),
SD_JSON_BUILD_PAIR("uhex32", SD_JSON_BUILD_UNSIGNED(UINT32_MAX)),
SD_JSON_BUILD_PAIR("uint64", SD_JSON_BUILD_UNSIGNED(UINT64_MAX)),
SD_JSON_BUILD_PAIR("uhex64", SD_JSON_BUILD_UNSIGNED(UINT64_MAX))))));
sd_json_variant_dump(b, SD_JSON_FORMAT_NEWLINE, stdout, NULL);
ASSERT_TRUE(sd_json_variant_equal(a, b));
}
TEST(vertical) {
_cleanup_(table_unrefp) Table *t = NULL;
_cleanup_free_ char *formatted = NULL;