From 2831d6a17c8d70a41bed0bd30893eb8e60dd59a2 Mon Sep 17 00:00:00 2001 From: Antonio Huete Jimenez Date: Mon, 30 Nov 2020 18:28:17 +0100 Subject: [PATCH] libaura: More tests for dicts, duplicate handling --- .../usr.sbin/installer/libaura/Makefile | 2 +- .../usr.sbin/installer/libaura/dict3/Makefile | 11 ++++ .../usr.sbin/installer/libaura/dict3/dict3.c | 54 +++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 tools/regression/usr.sbin/installer/libaura/dict3/Makefile create mode 100644 tools/regression/usr.sbin/installer/libaura/dict3/dict3.c diff --git a/tools/regression/usr.sbin/installer/libaura/Makefile b/tools/regression/usr.sbin/installer/libaura/Makefile index 8b8d2502fd..c45fbf070f 100644 --- a/tools/regression/usr.sbin/installer/libaura/Makefile +++ b/tools/regression/usr.sbin/installer/libaura/Makefile @@ -1,3 +1,3 @@ -SUBDIR+= dict1 dict2 +SUBDIR+= dict1 dict2 dict3 .include diff --git a/tools/regression/usr.sbin/installer/libaura/dict3/Makefile b/tools/regression/usr.sbin/installer/libaura/dict3/Makefile new file mode 100644 index 0000000000..67b8d06de0 --- /dev/null +++ b/tools/regression/usr.sbin/installer/libaura/dict3/Makefile @@ -0,0 +1,11 @@ +.PATH: ${.CURDIR}/../../../../../../usr.sbin/installer/libaura/ + +PROG=dict3 +SRCS=dict3.c mem.c dict.c + +CLEANFILES+= *.core + +CFLAGS+= -I${.CURDIR}/../../../../../../usr.sbin/installer/libaura +NOMAN= + +.include diff --git a/tools/regression/usr.sbin/installer/libaura/dict3/dict3.c b/tools/regression/usr.sbin/installer/libaura/dict3/dict3.c new file mode 100644 index 0000000000..3e07c7bc60 --- /dev/null +++ b/tools/regression/usr.sbin/installer/libaura/dict3/dict3.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include + +const int methods[3] = { + AURA_DICT_HASH, + AURA_DICT_LIST, + AURA_DICT_SORTED_LIST +}; + +const char *key = "key"; + +static struct aura_dict * +dict_create(int method) +{ + struct aura_dict *d; + char *first, *second; + + first = malloc(16); + second = malloc(16); + + d = aura_dict_new(2, method); + + snprintf(first, strlen("first") + 1, "%s", "first"); + snprintf(second, strlen("second") + 1, "%s", "second"); + + aura_dict_store(d, key, strlen(key), first, strlen("first") + 1); + aura_dict_store(d, key, strlen(key), second, strlen("second") + 1); + + return d; +} + +int +main(void) +{ + struct aura_dict *d; + + for (int i = 1; i <= 3; i++) { + char *v; + size_t len = 0; + + d = dict_create(i); + + aura_dict_fetch(d, "key", strlen("key"), (void **)&v, &len); + if (!strcmp("second", v) == 0) { + fprintf(stderr, + "aura_dict_store did not handle duplicates\n"); + return 1; + } + } + + return 0; +} -- 2.41.0