summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fd3b58d)
raw | patch | inline | side by side (parent: fd3b58d)
author | Sebastian Harl <sh@tokkee.org> | |
Thu, 20 Feb 2014 20:51:27 +0000 (21:51 +0100) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Thu, 20 Feb 2014 20:51:27 +0000 (21:51 +0100) |
t/core/data_test.c | patch | blob | history |
diff --git a/t/core/data_test.c b/t/core/data_test.c
index 649a7df4bece545e9689953ec31ea39e52f55018..954201451b35c88bd9fbe29a4ba3f038edd635df 100644 (file)
--- a/t/core/data_test.c
+++ b/t/core/data_test.c
START_TEST(test_format)
{
- sdb_data_t datum;
sdb_strbuf_t *buf;
- const char *string;
- const char *expected;
-
- int check;
+ size_t i;
+
+ struct {
+ sdb_data_t datum;
+ const char *expected;
+ } golden_data[] = {
+ {
+ { SDB_TYPE_INTEGER, { .integer = 4711 } },
+ "4711",
+ },
+ {
+ { SDB_TYPE_DECIMAL, { .decimal = 65536.0 } },
+ "0x1p+16",
+ },
+ {
+ { SDB_TYPE_STRING, { .string = NULL } },
+ "\"NULL\"",
+ },
+ {
+ { SDB_TYPE_STRING, { .string = "this is a test" } },
+ "\"this is a test\"",
+ },
+ {
+ { SDB_TYPE_STRING, { .string = "special \\ \" characters" } },
+ "\"special \\\\ \\\" characters\"",
+ },
+ {
+ { SDB_TYPE_DATETIME, { .datetime= 471147114711471100 } },
+ "\"1984-12-06 02:11:54 +0000\"",
+ },
+ {
+ { SDB_TYPE_BINARY, { .binary = { 0, NULL } } },
+ "\"\"",
+ },
+ {
+ {
+ SDB_TYPE_BINARY,
+ { .binary = { 12, (unsigned char *)"binary\0crap\x42" } },
+ },
+ "\"\\x62\\x69\\x6e\\x61\\x72\\x79\\x0\\x63\\x72\\x61\\x70\\x42\"",
+ },
+ };
buf = sdb_strbuf_create(1024);
fail_unless(buf != NULL,
- "INTERNAL ERROR: Failed to allocate string buffer");
-
- datum.type = SDB_TYPE_INTEGER;
- datum.data.integer = 4711;
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(INTEGER) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "4711";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.type = SDB_TYPE_DECIMAL;
- datum.data.decimal = 65536.0;
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(DECIMAL) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "0x1p+16";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.type = SDB_TYPE_STRING;
- datum.data.string = "this is a test";
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(STRING) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "\"this is a test\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.data.string = "now using special \\ \" characters";
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(STRING) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "\"now using special \\\\ \\\" characters\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.data.string = NULL;
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(STRING) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "\"NULL\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.type = SDB_TYPE_DATETIME;
- datum.data.datetime = 471147114711471100;
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(DATETIME) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "\"1984-12-06 02:11:54 +0000\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.type = SDB_TYPE_BINARY;
- datum.data.binary.datum = (unsigned char *)"binary\0crap\x42";
- datum.data.binary.length = 12;
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(BINARY) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected =
- "\"\\x62\\x69\\x6e\\x61\\x72\\x79\\x0\\x63\\x72\\x61\\x70\\x42\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
-
- datum.data.binary.datum = NULL;
- datum.data.binary.length = 0;
- sdb_strbuf_clear(buf);
- check = sdb_data_format(&datum, buf);
- fail_unless(! check,
- "sdb_data_format(BINARY) = %d; expected: 0", check);
- string = sdb_strbuf_string(buf);
- expected = "\"\"";
- fail_unless(! strcmp(string, expected),
- "sdb_data_format() used wrong format: %s; expected: %s",
- string, expected);
+ "INTERNAL ERROR: Failed to allocate string buffer");
+
+ for (i = 0; i < SDB_STATIC_ARRAY_LEN(golden_data); ++i) {
+ const char *string;
+ int check;
+
+ check = sdb_data_format(&golden_data[i].datum, buf);
+ fail_unless(! check,
+ "sdb_data_format() = %d; expected: 0", check);
+ string = sdb_strbuf_string(buf);
+ fail_unless(! strcmp(string, golden_data[i].expected),
+ "sdb_data_format() used wrong format: %s; expected: %s",
+ string, golden_data[i].expected);
+ sdb_strbuf_clear(buf);
+ }
+
+ sdb_strbuf_destroy(buf);
}
END_TEST