diff options
author | Mattias Andrée <m@maandree.se> | 2025-01-31 20:21:32 +0100 |
---|---|---|
committer | Mattias Andrée <m@maandree.se> | 2025-01-31 20:21:32 +0100 |
commit | 66cef0fe4754cc33fa3b9f8ace3e3ef4e7f662c7 (patch) | |
tree | 2637f644e3375e87c72c9258a943b04ad30c53f8 /test-variables.c | |
parent | Fix mistakes and add tests (diff) | |
download | libenv-66cef0fe4754cc33fa3b9f8ace3e3ef4e7f662c7.tar.gz libenv-66cef0fe4754cc33fa3b9f8ace3e3ef4e7f662c7.tar.bz2 libenv-66cef0fe4754cc33fa3b9f8ace3e3ef4e7f662c7.tar.xz |
Test the testable aspects of libenv_get_complete_list and print the variable list for human verification
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rw-r--r-- | test-variables.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test-variables.c b/test-variables.c new file mode 100644 index 0000000..3d5b7c5 --- /dev/null +++ b/test-variables.c @@ -0,0 +1,84 @@ +/* See LICENSE file for copyright and license details. */ +#include "libenv.h" +#include <assert.h> /* TODO improve output */ +#include <stdio.h> + + +#define ELEMSOF(A) (sizeof(A) / sizeof(*(A))) + + +static const char *class_names[] = { + "LIBENV_END", + "display", + "display-config", + "desktop", + "terminal-caps", + "local-terminal", + "locale", + "timezone", + "session", + "theme-config", + "theme-plugin", + "internet", + "audio", + "user", + "applications", + "preferences", + "system-paths", + "user-paths", + "pwd", + "exec", + "path", + "remote-unsafe", + "remote-safe", + "login-unsafe", + "login-safe", + "su-unsafe", + "su-safe" +}; + + +int +main(void) +{ + const struct libenv_variable *vars; + size_t nclasswords1 = 0, nclasswords2 = 1, nclasswords; + size_t count1 = 0, count2 = 1, count; + size_t i, j; + + assert(vars = libenv_get_complete_list(NULL, NULL)); + assert(vars == libenv_get_complete_list(&nclasswords1, NULL)); + assert(vars == libenv_get_complete_list(NULL, &count1)); + assert(vars == libenv_get_complete_list(&nclasswords2, &count2)); + assert(vars == libenv_get_complete_list(&nclasswords, &count)); + + assert(nclasswords1 == nclasswords2); + assert(nclasswords1 == nclasswords); + assert(count1 == count2); + assert(count1 == count); + + assert(!vars[count].name); + assert(!vars[count].classes); + + assert(nclasswords == (ELEMSOF(class_names) + 63) / 64); + + for (i = 0; i < count; i++) { + const char *prefix = " "; + + assert(vars[i].name); + assert(*vars[i].name); + assert(vars[i].classes); + assert(!(vars[i].classes[0] & 1)); /* LIBENV_END */ + + printf("%s:", vars[i].name); + for (j = 0; j < ELEMSOF(class_names); j++) { + if ((vars[i].classes[j / 64] >> (j % 64)) & 1) { + printf("%s%s", prefix, class_names[j]); + prefix = ", "; + } + } + printf("\n"); + } + + return 0; +} |