Code

proto: Add support for marshaling all data types.
[sysdb.git] / t / unit / utils / proto_test.c
index 1ec0615fa33fd7a7f29c2796a9c2c369e92afebe..9f24c81e43cf1b054be3e45c1c391cbca6636900 100644 (file)
@@ -39,6 +39,7 @@ START_TEST(test_marshal_data)
 #define STRING_TYPE "\0\0\0\3"
 #define DATETIME_TYPE "\0\0\0\4"
 #define BINARY_TYPE "\0\0\0\5"
+#define REGEX_TYPE "\0\0\0\6"
 
 #define NULL_ARRAY "\0\0\1\0"
 #define INT_ARRAY "\0\0\1\1"
@@ -46,11 +47,26 @@ START_TEST(test_marshal_data)
 #define STRING_ARRAY "\0\0\1\3"
 #define DATETIME_ARRAY "\0\0\1\4"
 #define BINARY_ARRAY "\0\0\1\5"
+#define REGEX_ARRAY "\0\0\1\6"
 
        regex_t dummy_re;
        int64_t int_values[] = { 47, 11, 23 };
        double dec_values[] = { 47.11, .5 };
        char *string_values[] = { "foo", "abcd" };
+       sdb_time_t datetime_values[] = { 4711, 1234567890123456789L };
+       struct {
+               size_t length;
+               unsigned char *datum;
+       } binary_values[] = {
+               { 3, (unsigned char *)"\x1\x2\x3" },
+               { 4, (unsigned char *)"\x42\x0\xa\x1b" },
+       };
+       struct {
+               char *raw;
+               regex_t regex;
+       } regex_values[] = {
+               { "dummy regex", dummy_re },
+       };
 
        struct {
                sdb_data_t datum;
@@ -85,7 +101,7 @@ START_TEST(test_marshal_data)
                },
                {
                        { SDB_TYPE_REGEX, { .re = { "dummy", dummy_re } } },
-                       -1, NULL, /* not supported */
+                       14, REGEX_TYPE "\0\0\0\x6" "dummy\0",
                },
                {
                        { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = {
@@ -105,6 +121,23 @@ START_TEST(test_marshal_data)
                        25, STRING_ARRAY "\0\0\0\x2" "\0\0\0\x4" "foo\0"
                                "\0\0\0\x5" "abcd\0"
                },
+               {
+                       { SDB_TYPE_DATETIME | SDB_TYPE_ARRAY, { .array = {
+                               2, datetime_values } } },
+                       24, DATETIME_ARRAY "\0\0\0\x2" "\0\0\0\0\0\0\x12\x67"
+                               "\x11\x22\x10\xf4\x7d\xe9\x81\x15"
+               },
+               {
+                       { SDB_TYPE_BINARY | SDB_TYPE_ARRAY, { .array = {
+                               2, binary_values } } },
+                       23, BINARY_ARRAY "\0\0\0\x2" "\0\0\0\x3" "\x1\x2\x3"
+                               "\0\0\0\4" "\x42\x0\xa\x1b"
+               },
+               {
+                       { SDB_TYPE_REGEX | SDB_TYPE_ARRAY, { .array = {
+                               1, regex_values } } },
+                       24, REGEX_ARRAY "\0\0\0\1" "\0\0\0\xc" "dummy regex\0"
+               },
        };
 
        size_t i;