Changeset: 64578f383883 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=64578f383883
Modified Files:
        ctest/tools/monetdbe/cmocka_test.c
        ctest/tools/monetdbe/test_helper.c
        ctest/tools/monetdbe/test_helper.h
        ctest/tools/monetdbe/test_helper_template.h
Branch: default
Log Message:

merged


diffs (truncated from 347 to 300 lines):

diff --git a/ctest/tools/monetdbe/cmocka_test.c 
b/ctest/tools/monetdbe/cmocka_test.c
--- a/ctest/tools/monetdbe/cmocka_test.c
+++ b/ctest/tools/monetdbe/cmocka_test.c
@@ -40,7 +40,7 @@ static void create_table_test(void **sta
        monetdbe_database mdbe = *state;
     char* err;
 
-       err = monetdbe_query(mdbe, "CREATE TABLE test (x integer, y string)", 
NULL, NULL);
+       err = monetdbe_query(mdbe, "CREATE TABLE test (si SMALLINT,i INTEGER, 
bi BIGINT, c CLOB, b BLOB, d DATE, t TIME, ts TIMESTAMP)", NULL, NULL);
 
        assert_null(err);
 }
@@ -49,7 +49,13 @@ static void populate_table_test(void **s
        monetdbe_database mdbe = *state;
     char* err;
 
-       err = monetdbe_query(mdbe, "INSERT INTO test VALUES (42, 'Hello, '), 
(58, 'World!')", NULL, NULL);
+       err = monetdbe_query(mdbe,
+       "INSERT INTO test VALUES "
+               "(4, 40, 400, 'aaa', x'aaaaaa', '2020-06-17', '12:00:00', 
'2020-06-17 12:00:00'),"
+               "(6, 60, 600, 'ccc', x'cccccc', '2022-06-17', '14:00:00', 
'2022-06-17 14:00:00'),"
+               "(5, 50, 500, 'bbb', x'bbbbbb', '2021-06-17', '13:00:00', 
'2021-06-17 13:00:00'),"
+               "(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)",
+       NULL, NULL);
 
        assert_null(err);
 }
@@ -60,22 +66,14 @@ static void query_table_test(void **stat
        monetdbe_database mdbe = *state;
     char* err;
 
-       err = monetdbe_query(mdbe, "SELECT MIN(x), CONCAT(MIN(y), MAX(y)) FROM 
test; ", &result, NULL);
+       err = monetdbe_query(mdbe, "SELECT MIN(si), MAX(i) FROM test; ", 
&result, NULL);
 
        assert_null(err);
 
-       assert_int_equal((int) result->nrows, 1);
        assert_int_equal((int) result->ncols, 2);
-       monetdbe_column* rcol;
-
-       CHECK_COLUMN(mdbe, result, 0, int32_t, {42});
 
-       err = monetdbe_result_fetch(result, &rcol, 1);
-       assert_null(err);
-
-       monetdbe_column_str * col_y = (monetdbe_column_str *) rcol;
-
-       assert_string_equal((const char*) col_y->data[0], "Hello, World!");
+       assert_true(CHECK_COLUMN(result, 0, int16_t, {{4}}));
+       assert_true(CHECK_COLUMN(result, 1, int32_t, {{60}}));
 
        err = monetdbe_cleanup_result(mdbe, result);
 
@@ -88,15 +86,45 @@ static void query_table_test2(void **sta
        monetdbe_database mdbe = *state;
     char* err;
 
-       err = monetdbe_query(mdbe, "SELECT x, y FROM test; ", &result, NULL);
+       err = monetdbe_query(mdbe, "SELECT si, i, bi, c, b, d, t, ts FROM test; 
", &result, NULL);
 
        assert_null(err);
 
-       assert_int_equal((int) result->nrows, 2);
-       assert_int_equal((int) result->ncols, 2);
+       assert_int_equal((int) result->ncols, 8);
+
+       int a;
+
+       assert_true(CHECK_COLUMN(result, 0, int16_t, {{(a=3,a+1)}, {6}, {5}, 
Null}));
+       assert_true(CHECK_COLUMN(result, 1, int32_t, {{40}, {60}, {50}, Null}));
+       assert_true(CHECK_COLUMN(result, 2, int64_t, {{400}, {600}, {500}, 
Null}));
+       assert_true(CHECK_COLUMN(result, 3, str, {{"aaa"}, {"ccc"}, {"bbb"}, 
Null}));
+       assert_true(CHECK_COLUMN(result, 4, blob, {{{3, "\xaa\xaa\xaa"}}, {{3, 
"\xcc\xcc\xcc"}}, {{3, "\xbb\xbb\xbb"}}, Null}));
+       assert_true(CHECK_COLUMN(result, 5, date, {{{17, 6, 2020}}, {{17, 6, 
2022}}, {{17, 6, 2021}}, Null}));
+       assert_true(CHECK_COLUMN(result, 6, time, {{{0, 0, 0, 12}}, {{0, 0, 0, 
14}}, {{0, 0, 0, 13}}, Null}));
+       assert_true(CHECK_COLUMN(result, 7, timestamp, {{{{17, 6, 2020}, {0, 0, 
0, 12}}}, {{{17, 6, 2022}, {0, 0, 0, 14}}}, {{{17, 6, 2021}, {0, 0, 0, 13}}}, 
Null}));
+
+       err = monetdbe_cleanup_result(mdbe, result);
+
+       assert_null(err);
+}
 
-       assert_true(CHECK_COLUMN(mdbe, result, 0, int32_t, {42, 58}));
-       assert_true(CHECK_COLUMN(mdbe, result, 1, str, {"Hello, ", "World!"}));
+static void query_table_test3(void **state) {
+
+       monetdbe_result* result = NULL;
+       monetdbe_database mdbe = *state;
+    char* err;
+
+       err = monetdbe_query(mdbe, "SELECT SUM(si), SUM(i), SUM(bi) FROM test; 
", &result, NULL);
+
+       assert_null(err);
+
+       assert_int_equal((int) result->ncols, 3);
+
+       /* TODO: Figure out what is expected here.
+       assert_true(CHECK_COLUMN(result, 0, BIGGEST_INTEGER_TPE, {{15}}));
+       assert_true(CHECK_COLUMN(result, 1, BIGGEST_INTEGER_TPE, {{150}}));
+       assert_true(CHECK_COLUMN(result, 2, BIGGEST_INTEGER_TPE, {1500}));
+       */
 
        err = monetdbe_cleanup_result(mdbe, result);
 
@@ -110,7 +138,8 @@ main(void)
         cmocka_unit_test(create_table_test),
                cmocka_unit_test(populate_table_test),
                cmocka_unit_test(query_table_test),
-               cmocka_unit_test(query_table_test2)
+               cmocka_unit_test(query_table_test2),
+               cmocka_unit_test(query_table_test3)
     };
 
        return cmocka_run_group_tests_name("SQL queries for MonetDBe", tests, 
setup, teardown);
diff --git a/ctest/tools/monetdbe/test_helper.c 
b/ctest/tools/monetdbe/test_helper.c
--- a/ctest/tools/monetdbe/test_helper.c
+++ b/ctest/tools/monetdbe/test_helper.c
@@ -1,101 +1,82 @@
 #include "test_helper.h"
 
-#define ACTUAL_TPE_monetdb_bool int8_t
-#define ACTUAL_TPE_monetdb_int8_t int8_t
-#define ACTUAL_TPE_monetdb_int16_t int16_t
-#define ACTUAL_TPE_monetdb_int32_t int32_t
-#define ACTUAL_TPE_monetdb_int64_t int64_t
-#if HAVE_HGE
-#define ACTUAL_TPE_monetdb_int128_t __int128
-#endif
-#define ACTUAL_TPE_monetdb_size_t size_t
-#define ACTUAL_TPE_monetdb_float float
-#define ACTUAL_TPE_monetdb_double double
-#define ACTUAL_TPE_monetdb_str char*
-#define ACTUAL_TPE_monetdb_blob monetdbe_data_blob
-#define ACTUAL_TPE_monetdb_date monetdbe_data_date
-#define ACTUAL_TPE_monetdb_time monetdbe_data_time
-#define ACTUAL_TPE_monetdb_timestamp monetdbe_data_timestamp
-
 #define _CONCAT(A, B)   A##B
 #define CONCAT(A, B)    _CONCAT(A, B)
-
 #define EXPAND(A) A
 
-#define GET_ACTUAL_TPE(TPE_ID) ACTUAL_TPE_monetdb_##TPE_ID
 #define GET_TPE_ENUM(TPE) CONCAT(monetdb_, TPE)
 
-#define TPE int8_t
+#define TPE TEST_TPE_ID(int8_t)
 #define CHECK_COLUMN_FUNC check_column_bool
 #define TPE_ENUM monetdbe_bool
 #define MONETDB_COLUMN_TPE monetdbe_column_bool
 #include "test_helper_template.h"
 
-#define TPE int8_t
+#define TPE TEST_TPE_ID(int8_t)
 #define CHECK_COLUMN_FUNC check_column_int8_t
 #define TPE_ENUM monetdbe_int8_t
 #define MONETDB_COLUMN_TPE monetdbe_column_int8_t
 #include "test_helper_template.h"
 
-#define TPE int16_t
+#define TPE TEST_TPE_ID(int16_t)
 #define CHECK_COLUMN_FUNC check_column_int16_t
 #define TPE_ENUM monetdbe_int16_t
 #define MONETDB_COLUMN_TPE monetdbe_column_int16_t
 #include "test_helper_template.h"
 
-#define TPE int32_t
+#define TPE TEST_TPE_ID(int32_t)
 #define CHECK_COLUMN_FUNC check_column_int32_t
 #define TPE_ENUM monetdbe_int32_t
 #define MONETDB_COLUMN_TPE monetdbe_column_int32_t
 #include "test_helper_template.h"
 
-#define TPE int64_t
+#define TPE TEST_TPE_ID(int64_t)
 #define CHECK_COLUMN_FUNC check_column_int64_t
 #define TPE_ENUM monetdbe_int64_t
 #define MONETDB_COLUMN_TPE monetdbe_column_int64_t
 #include "test_helper_template.h"
 
 #if HAVE_HGE
-#define TPE __int128
+#define TPE TEST_TPE_ID(int128_t)
 #define CHECK_COLUMN_FUNC check_column_int128_t
 #define TPE_ENUM monetdbe_int128_t
 #define MONETDB_COLUMN_TPE monetdbe_column_int128_t
 #include "test_helper_template.h"
 #endif
 
-#define TPE size_t
+#define TPE TEST_TPE_ID(size_t)
 #define CHECK_COLUMN_FUNC check_column_size_t
 #define TPE_ENUM monetdbe_size_t
 #define MONETDB_COLUMN_TPE monetdbe_column_size_t
 #include "test_helper_template.h"
 
-#define TPE float
+#define TPE TEST_TPE_ID(float)
 #define CHECK_COLUMN_FUNC check_column_float
 #define TPE_ENUM monetdbe_float
 #define MONETDB_COLUMN_TPE monetdbe_column_float
 #include "test_helper_template.h"
 
-#define TPE double
+#define TPE TEST_TPE_ID(double)
 #define CHECK_COLUMN_FUNC check_column_double
 #define TPE_ENUM monetdbe_double
 #define MONETDB_COLUMN_TPE monetdbe_column_double
 #include "test_helper_template.h"
 
-#define TPE char*
+#define TPE TEST_TPE_ID(str)
 #define CHECK_COLUMN_FUNC check_column_str
 #define TPE_ENUM monetdbe_str
 #define MONETDB_COLUMN_TPE monetdbe_column_str
 #define EQUALS(A,B) (strcmp(A, B)==0)
 #include "test_helper_template.h"
 
-#define TPE monetdbe_data_blob
+#define TPE TEST_TPE_ID(blob)
 #define CHECK_COLUMN_FUNC check_column_blob
 #define TPE_ENUM monetdbe_blob
 #define EQUALS(A,B) ((A).size != (B).size?false:(memcmp((A).data, (B).data, 
(A).size)) == 0)
 #define MONETDB_COLUMN_TPE monetdbe_column_blob
 #include "test_helper_template.h"
 
-#define TPE monetdbe_data_date
+#define TPE TEST_TPE_ID(date)
 #define CHECK_COLUMN_FUNC check_column_date
 #define TPE_ENUM monetdbe_date
 #define EQUALS_DATE(A,B) (((A).day == (B).day) && ((A).month == (B).month) && 
((A).year == (B).year))
@@ -103,7 +84,7 @@
 #define MONETDB_COLUMN_TPE monetdbe_column_date
 #include "test_helper_template.h"
 
-#define TPE monetdbe_data_time
+#define TPE TEST_TPE_ID(time)
 #define CHECK_COLUMN_FUNC check_column_time
 #define TPE_ENUM monetdbe_time
 #define EQUALS_TIME(A,B) (((A).ms == (B).ms) && ((A).seconds == (B).seconds) 
&& ((A).minutes == (B).minutes) && ((A).hours == (B).hours))
@@ -111,7 +92,7 @@
 #define MONETDB_COLUMN_TPE monetdbe_column_time
 #include "test_helper_template.h"
 
-#define TPE monetdbe_data_timestamp
+#define TPE TEST_TPE_ID(timestamp)
 #define CHECK_COLUMN_FUNC check_column_timestamp
 #define TPE_ENUM monetdbe_timestamp
 #define EQUALS(A,B) (EQUALS_DATE(A.date, B.date) && EQUALS_TIME(A.time, 
B.time))
diff --git a/ctest/tools/monetdbe/test_helper.h 
b/ctest/tools/monetdbe/test_helper.h
--- a/ctest/tools/monetdbe/test_helper.h
+++ b/ctest/tools/monetdbe/test_helper.h
@@ -1,30 +1,63 @@
 
 #include "monetdbe.h"
 
-monetdbe_export bool check_column_bool      (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, int8_t* expected_column);
-monetdbe_export bool check_column_int8_t    (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, int8_t* expected_column);
-monetdbe_export bool check_column_int16_t   (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, int16_t* expected_column);
-monetdbe_export bool check_column_int32_t   (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, int32_t* expected_column);
-monetdbe_export bool check_column_int64_t   (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, int64_t* expected_column);
+#define TEST_TPE(TPE) struct {TPE data; char _is_null;}
+
+#define TEST_TPE_ID(TPE) TEST_##TPE
+
+#define TYPE_DEFTEST_TPE(TPE, ACTUAL_TPE) typedef TEST_TPE(ACTUAL_TPE) 
TEST_TPE_ID(TPE)
+
+
+TYPE_DEFTEST_TPE(bool, int8_t);
+TYPE_DEFTEST_TPE(int8_t, int8_t);
+TYPE_DEFTEST_TPE(int16_t, int16_t);
+TYPE_DEFTEST_TPE(int32_t, int32_t);
+TYPE_DEFTEST_TPE(int64_t, int64_t);
 #if HAVE_HGE
-monetdbe_export bool check_column_int128_t  (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, __int128* expected_column);
+TYPE_DEFTEST_TPE(int128_t, __int128);
 #endif
-monetdbe_export bool check_column_size_t    (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, size_t* expected_column);
-monetdbe_export bool check_column_float     (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, float* expected_column);
-monetdbe_export bool check_column_double    (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, double* expected_column);
-monetdbe_export bool check_column_str       (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, char ** expected_column);
-monetdbe_export bool check_column_blob      (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, monetdbe_data_blob* 
expected_column);
-monetdbe_export bool check_column_date      (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, monetdbe_data_date* 
expected_column);
-monetdbe_export bool check_column_time      (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, monetdbe_data_time* 
expected_column);
-monetdbe_export bool check_column_timestamp (monetdbe_result* result, size_t 
column_index, size_t expected_nr_column_entries, monetdbe_data_timestamp* 
expected_column);
+TYPE_DEFTEST_TPE(size_t, size_t);
+TYPE_DEFTEST_TPE(float, float);
+TYPE_DEFTEST_TPE(double, double);
+TYPE_DEFTEST_TPE(str, char*);
+TYPE_DEFTEST_TPE(blob, monetdbe_data_blob);
+TYPE_DEFTEST_TPE(date, monetdbe_data_date);
+TYPE_DEFTEST_TPE(time, monetdbe_data_time);
+TYPE_DEFTEST_TPE(timestamp, monetdbe_data_timestamp);
+
+#define GET_ACTUAL_TPE(TPE_ID) ACTUAL_TPE_monetdb_##TPE_ID
+
+#define Null  {._is_null = 1}
 
-#ifndef str
-#define str char*
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to