aboutsummaryrefslogtreecommitdiffstats
path: root/test-variables.c
diff options
context:
space:
mode:
Diffstat (limited to 'test-variables.c')
-rw-r--r--test-variables.c84
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;
+}