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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user