Code

data: Escape \ and " in strings when formatting them.
[sysdb.git] / t / core / data_test.c
index e4ead2fe12711484bd5f5c4a42d46076e989c29f..649a7df4bece545e9689953ec31ea39e52f55018 100644 (file)
@@ -155,6 +155,28 @@ START_TEST(test_format)
                        "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);
@@ -162,7 +184,7 @@ START_TEST(test_format)
        fail_unless(! check,
                        "sdb_data_format(DATETIME) = %d; expected: 0", check);
        string = sdb_strbuf_string(buf);
-       expected = "1984-12-06 02:11:54 +0000";
+       expected = "\"1984-12-06 02:11:54 +0000\"";
        fail_unless(! strcmp(string, expected),
                        "sdb_data_format() used wrong format: %s; expected: %s",
                        string, expected);
@@ -180,6 +202,18 @@ START_TEST(test_format)
        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);
 }
 END_TEST