Code

proto: Added support for marshaling double-precision values.
[sysdb.git] / t / unit / core / data_test.c
index 2baa6a15876d05ff53b1b98283379cf7d1f50f1a..a848756a185385ae1431fb43c9119fc855bfe181 100644 (file)
@@ -405,6 +405,27 @@ START_TEST(test_cmp)
                        { SDB_TYPE_REGEX, { .re = { "a", empty_re } } },
                        1,
                },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_INTEGER, { .array = { 0, NULL } } },
+                       { SDB_TYPE_ARRAY | SDB_TYPE_INTEGER, { .array = { 0, NULL } } },
+                       0,
+               },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_INTEGER, { .array = { 0, NULL } } },
+                       {
+                               SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values1), int_values1 } },
+                       },
+                       -1,
+               },
+               {
+                       {
+                               SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values1), int_values1 } },
+                       },
+                       { SDB_TYPE_ARRAY | SDB_TYPE_INTEGER, { .array = { 0, NULL } } },
+                       1,
+               },
                {
                        {
                                SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
@@ -438,6 +459,27 @@ START_TEST(test_cmp)
                        },
                        1,
                },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_STRING, { .array = { 0, NULL } } },
+                       { SDB_TYPE_ARRAY | SDB_TYPE_STRING, { .array = { 0, NULL } } },
+                       0,
+               },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_STRING, { .array = { 0, NULL } } },
+                       {
+                               SDB_TYPE_ARRAY | SDB_TYPE_STRING,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values1), string_values1 } },
+                       },
+                       -1,
+               },
+               {
+                       {
+                               SDB_TYPE_ARRAY | SDB_TYPE_STRING,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values1), string_values1 } },
+                       },
+                       { SDB_TYPE_ARRAY | SDB_TYPE_STRING, { .array = { 0, NULL } } },
+                       1,
+               },
                {
                        {
                                SDB_TYPE_ARRAY | SDB_TYPE_STRING,
@@ -707,6 +749,7 @@ START_TEST(test_strcmp)
                        { SDB_TYPE_STRING, { .string = "/regex/" } },
                        0,
                },
+               /* TODO: add support for arrays */
        };
 
        size_t i;
@@ -730,21 +773,51 @@ END_TEST
 START_TEST(test_inarray)
 {
        int64_t int_values[] = { 47, 11, 64 };
+       int64_t int_values2[] = { 64, 11 };
+       int64_t int_values3[] = { 47, 11, 42 };
        double dec_values[] = { 12.3, 47.11, 64.0 };
+       double dec_values2[] = { 12.3, 47.11 };
+       double dec_values3[] = { 2.3, 47.11 };
        char *string_values[] = { "foo", "bar", "qux", "baz" };
+       char *string_values2[] = { "qux", "bar" };
+       char *string_values3[] = { "foo", "bar", "qux", "baz", "bay" };
 
        sdb_data_t int_array = {
                SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
                { .array = { SDB_STATIC_ARRAY_LEN(int_values), int_values } }
        };
+       sdb_data_t int_array2 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
+               { .array = { SDB_STATIC_ARRAY_LEN(int_values2), int_values2 } }
+       };
+       sdb_data_t int_array3 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_INTEGER,
+               { .array = { SDB_STATIC_ARRAY_LEN(int_values3), int_values3 } }
+       };
        sdb_data_t dec_array = {
                SDB_TYPE_ARRAY | SDB_TYPE_DECIMAL,
                { .array = { SDB_STATIC_ARRAY_LEN(dec_values), dec_values } }
        };
+       sdb_data_t dec_array2 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_DECIMAL,
+               { .array = { SDB_STATIC_ARRAY_LEN(dec_values2), dec_values2 } }
+       };
+       sdb_data_t dec_array3 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_DECIMAL,
+               { .array = { SDB_STATIC_ARRAY_LEN(dec_values3), dec_values3 } }
+       };
        sdb_data_t string_array = {
                SDB_TYPE_ARRAY | SDB_TYPE_STRING,
                { .array = { SDB_STATIC_ARRAY_LEN(string_values), string_values } }
        };
+       sdb_data_t string_array2 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_STRING,
+               { .array = { SDB_STATIC_ARRAY_LEN(string_values2), string_values2 } }
+       };
+       sdb_data_t string_array3 = {
+               SDB_TYPE_ARRAY | SDB_TYPE_STRING,
+               { .array = { SDB_STATIC_ARRAY_LEN(string_values3), string_values3 } }
+       };
 
        struct {
                sdb_data_t value;
@@ -756,8 +829,6 @@ START_TEST(test_inarray)
                { { SDB_TYPE_INTEGER, { .integer = 64    } }, int_array,    1 },
                { { SDB_TYPE_INTEGER, { .integer = 65    } }, int_array,    0 },
                { { SDB_TYPE_NULL,    { .integer = 0     } }, int_array,    0 },
-               { int_array, { SDB_TYPE_INTEGER, { .integer = 47    } },    0 },
-               { int_array, int_array, 0 },
                { { SDB_TYPE_DECIMAL, { .decimal = 12.3  } }, dec_array,    1 },
                { { SDB_TYPE_DECIMAL, { .decimal = 47.11 } }, dec_array,    1 },
                { { SDB_TYPE_DECIMAL, { .decimal = 64.0  } }, dec_array,    1 },
@@ -773,6 +844,46 @@ START_TEST(test_inarray)
                { { SDB_TYPE_STRING,  { .string  = "ba"  } }, string_array, 0 },
                { { SDB_TYPE_STRING,  { .string  = "abc" } }, string_array, 0 },
                { { SDB_TYPE_NULL,    { .integer = 0     } }, string_array, 0 },
+               { int_array, { SDB_TYPE_INTEGER, { .integer = 47 } },       0 },
+               { int_array,     int_array,    1 },
+               { int_array2,    int_array,    1 },
+               { int_array3,    int_array,    0 },
+               { dec_array2,    int_array,    0 },
+               { string_array2, int_array,    0 },
+               { dec_array,     dec_array,    1 },
+               { dec_array2,    dec_array,    1 },
+               { dec_array3,    dec_array,    0 },
+               { int_array2,    dec_array,    0 },
+               { string_array2, dec_array,    0 },
+               { string_array,  string_array, 1 },
+               { string_array2, string_array, 1 },
+               { string_array3, string_array, 0 },
+               { int_array2,    string_array, 0 },
+               { dec_array2,    string_array, 0 },
+               {
+                       { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       int_array, 1,
+               },
+               {
+                       { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       dec_array, 0,
+               },
+               {
+                       { SDB_TYPE_DECIMAL | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       dec_array, 1,
+               },
+               {
+                       { SDB_TYPE_DECIMAL | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       int_array, 0,
+               },
+               {
+                       { SDB_TYPE_STRING | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       string_array, 1,
+               },
+               {
+                       { SDB_TYPE_STRING | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       dec_array, 0,
+               },
        };
 
        size_t i;
@@ -833,6 +944,18 @@ START_TEST(test_array_get)
                { string_array, 4, { -1, { .integer = 0 } } },
                { { SDB_TYPE_INTEGER, { .integer = 666 } }, 0, { -1, { .integer = 0 } } },
                { { SDB_TYPE_INTEGER, { .integer = 666 } }, 1, { -1, { .integer = 0 } } },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_INTEGER, { .array = { 0, NULL } } },
+                       0, { -1, { .integer = 0 } },
+               },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_DECIMAL, { .array = { 0, NULL } } },
+                       0, { -1, { .integer = 0 } },
+               },
+               {
+                       { SDB_TYPE_ARRAY | SDB_TYPE_STRING, { .array = { 0, NULL } } },
+                       0, { -1, { .integer = 0 } },
+               },
        };
 
        size_t i;
@@ -1179,6 +1302,70 @@ START_TEST(test_expr_eval)
                                } },
                        },
                },
+               {
+                       { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       {
+                               SDB_TYPE_INTEGER | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values), int_values } },
+                       },
+                       err,
+                       err,
+                       err,
+                       err,
+                       err,
+                       {
+                               SDB_TYPE_INTEGER | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values), int_values } },
+                       },
+               },
+               {
+                       {
+                               SDB_TYPE_INTEGER | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values), int_values } },
+                       },
+                       { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       err,
+                       err,
+                       err,
+                       err,
+                       err,
+                       {
+                               SDB_TYPE_INTEGER | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(int_values), int_values } },
+                       },
+               },
+               {
+                       { SDB_TYPE_STRING | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       {
+                               SDB_TYPE_STRING | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values), string_values } },
+                       },
+                       err,
+                       err,
+                       err,
+                       err,
+                       err,
+                       {
+                               SDB_TYPE_STRING | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values), string_values } },
+                       },
+               },
+               {
+                       {
+                               SDB_TYPE_STRING | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values), string_values } },
+                       },
+                       { SDB_TYPE_STRING | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       err,
+                       err,
+                       err,
+                       err,
+                       err,
+                       {
+                               SDB_TYPE_STRING | SDB_TYPE_ARRAY,
+                               { .array = { SDB_STATIC_ARRAY_LEN(string_values), string_values } },
+                       },
+               },
                {
                        { SDB_TYPE_NULL, { .integer = 0 } },
                        { SDB_TYPE_NULL, { .integer = 0 } },
@@ -1721,6 +1908,10 @@ START_TEST(test_format)
                        { SDB_TYPE_REGEX, { .re = { "some regex", empty_re } } },
                        "\"/some regex/\"",
                },
+               {
+                       { SDB_TYPE_INTEGER | SDB_TYPE_ARRAY, { .array = { 0, NULL } } },
+                       "[]",
+               },
                {
                        {
                                SDB_TYPE_INTEGER | SDB_TYPE_ARRAY,