ldb: Add test for ldb_qsort()
authorAndreas Schneider <asn@samba.org>
Thu, 22 Mar 2018 08:53:03 +0000 (09:53 +0100)
committerJeremy Allison <jra@samba.org>
Tue, 3 Apr 2018 18:20:10 +0000 (20:20 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/ldb/tests/test_ldb_qsort.c [new file with mode: 0644]
lib/ldb/wscript

diff --git a/lib/ldb/tests/test_ldb_qsort.c b/lib/ldb/tests/test_ldb_qsort.c
new file mode 100644 (file)
index 0000000..06e80d9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Unix SMB/CIFS implementation.
+ *
+ * Copyright (C) 2018      Andreas Schneider <asn@samba.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <ldb.h>
+
+static int cmp_integer(int *a, int *b, void *opaque)
+{
+       if (a == NULL || b == NULL) {
+               return 0;
+       }
+
+       if (*a > *b) {
+               return 1;
+       }
+
+       if (*a < *b) {
+               return -1;
+       }
+
+       return 0;
+}
+
+static void test_ldb_qsort(void **state)
+{
+       int a[6] = { 6, 3, 2, 7, 9, 4 };
+
+       ldb_qsort(a, 6, sizeof(int), NULL, (ldb_qsort_cmp_fn_t)cmp_integer);
+
+       assert_int_equal(a[0], 2);
+       assert_int_equal(a[1], 3);
+       assert_int_equal(a[2], 4);
+       assert_int_equal(a[3], 6);
+       assert_int_equal(a[4], 7);
+       assert_int_equal(a[5], 9);
+}
+
+int main(void) {
+       const struct CMUnitTest tests[] = {
+               cmocka_unit_test(test_ldb_qsort),
+       };
+
+       return cmocka_run_group_tests(tests, NULL, NULL);
+}
index 1455f92eb2e5c88a284788deee6b5214a814e924..1c9573f1cc4f5008302b18f9b0e963ec9a79ca5f 100644 (file)
@@ -358,6 +358,11 @@ def build(bld):
                          deps='cmocka ldb',
                          install=False)
 
+        bld.SAMBA_BINARY('test_ldb_qsort',
+                         source='tests/test_ldb_qsort.c',
+                         deps='cmocka ldb',
+                         install=False)
+
 def test(ctx):
     '''run ldb testsuite'''
     import Utils, samba_utils, shutil
@@ -386,7 +391,8 @@ def test(ctx):
 
     cmocka_ret = 0
     for test_exe in ['ldb_tdb_mod_op_test',
-                     'ldb_msg_test']:
+                     'ldb_msg_test',
+                     'test_ldb_qsort']:
             cmd = os.path.join(Utils.g_module.blddir, test_exe)
             cmocka_ret = cmocka_ret or samba_utils.RUN_COMMAND(cmd)