mirror of
https://github.com/radareorg/sdb.git
synced 2026-11-09 17:48:43 -10:00
69 lines
1.4 KiB
C
69 lines
1.4 KiB
C
/* sdb api testsuite - Copyright 2014 - pancake */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sdb/sdb.h>
|
|
|
|
|
|
#define OK "\x1b[32mOK\x1b[0m"
|
|
#define ER "\x1b[31mER\x1b[0m"
|
|
static int success = 0;
|
|
static Sdb *s = NULL;
|
|
typedef int TestFcn(const char **name);
|
|
|
|
static int iseq(const char *a, const char *b) {
|
|
int ret = !a || !b;
|
|
if (ret) return b==0;
|
|
ret = !!! strcmp (a, b);
|
|
if (!ret) eprintf (".-- (%s) expected (%s)\n", a, b);
|
|
return ret;
|
|
}
|
|
|
|
static int test(TestFcn tf) {
|
|
const char *name = NULL;
|
|
int ret = tf (&name);
|
|
printf ("%s %s\n", ret? OK:ER, name);
|
|
success += ret;
|
|
return ret;
|
|
}
|
|
|
|
/* --- testsuite --- */
|
|
#define TEST(x) static int test_refs_##x (const char **name) {\
|
|
*name = __FUNCTION__;
|
|
#define EXPECT(x) return iseq (sdb_const_get (s, "key", 0), x); }
|
|
|
|
TEST(refs)
|
|
Sdb *n = sdb_new0 ();
|
|
sdb_num_set (s, "key", n->refs, 0);
|
|
sdb_free (n);
|
|
EXPECT("0x1");
|
|
TEST(refs2)
|
|
Sdb *n = sdb_new0 ();
|
|
Sdb *n2 = sdb_new0 ();
|
|
sdb_ns_set (n2, "foo", n);
|
|
sdb_num_set (s, "key", n->refs, 0);
|
|
sdb_free (n);
|
|
sdb_free (n2);
|
|
EXPECT("0x2");
|
|
|
|
static TestFcn *tests[] = {
|
|
test_refs_refs,
|
|
test_refs_refs2,
|
|
NULL
|
|
};
|
|
|
|
int main() {
|
|
int i, res = 0;
|
|
s = sdb_new (NULL, NULL, 0);
|
|
for (i = 0; tests[i]; i++) {
|
|
res |= !!! test (tests[i]);
|
|
}
|
|
sdb_free (s);
|
|
printf ("TOTAL %d\n", i);
|
|
printf ("SUCCESS %d\n", success);
|
|
printf ("FAILED %d\n", i-success);
|
|
printf ("RATIO %d%%\n", (100*success)/i);
|
|
eprintf ("RES = %d\n", res);
|
|
return !! res;
|
|
}
|