X-Git-Url: https://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/4d796dabafdee54a7b726013416730efaafa905e..cd475ab947ddc0338bd54406234f9cbfa5abe2fd:/tests/scripts.at diff --git a/tests/scripts.at b/tests/scripts.at index 4a83807..dcbcce5 100644 --- a/tests/scripts.at +++ b/tests/scripts.at @@ -7,6 +7,7 @@ dnl There is NO WARRANTY, to the extent permitted by law. AT_BANNER([Script tests]) AT_SETUP([gen-options.awk]) +AT_KEYWORDS([gen-options awk script scripts]) AT_DATA([options.def], [[--option-only @@ -220,6 +221,7 @@ p AT_CLEANUP AT_SETUP([gen-strtab.awk]) +AT_KEYWORDS([gen-strtab awk script scripts]) AT_DATA([test.def], [[ @@ -301,6 +303,8 @@ oneline AT_CLEANUP AT_SETUP([gen-tree.awk]) +AT_KEYWORDS([gen-tree awk script scripts]) + AT_DATA([tree.def], [[ROOT0 r0a, r0a_OFFSET @@ -359,6 +363,7 @@ int main(void) print_subtree(tree0, 0, 1); printf("ROOT1\n"); print_subtree(tree1, 0, 1); + return 0; } ]]) cp tree.def expout @@ -366,7 +371,76 @@ AT_CHECK([$CC -o test0$EXEEXT test0.c && ./test0$EXEEXT], [0], [expout]) AT_CLEANUP +# Test the gen-tree features that avoid creating string labels for nodes. +AT_SETUP([gen-tree.awk @nostrtab option]) +AT_KEYWORDS([gen-tree awk script scripts]) + +AT_DATA([tree.def], +[[@nostrtab +ROOT + a 1, a_OFFSET + b 1 + c 2 + d 2, d_OFFSET + e 1 + f 2 +]]) +AT_CHECK([$AWK -f "$builddir/scripts/gen-tree.awk" tree.h]) + +AT_DATA([test0.c], +[[float tree_strtab = 0; +#define a [] +#define b [] +#define c [] +#define e [] +#define f [] +#include "tree.h" +#include + +static struct { int num, offset; } root[] = { ROOT_INITIALIZER }; + +int main(void) +{ + unsigned i; + for (i = 0; i < sizeof root / sizeof root[0]; i++) { + printf("%d, %d\n", root[i].num, root[i].offset); + } +} +]]) + +AT_CHECK([$CC -o test0$EXEEXT test0.c && ./test0$EXEEXT], [0], +[[1, 3 +2, 6 +0, 0 +1, 0 +2, 0 +0, 0 +1, 0 +2, 0 +0, 0 +]]) + +AT_DATA([flat.def], +[[FLAT + a 1 + b 2 + c 3 +@nostrtab +]]) +AT_CHECK([$AWK -f "$builddir/scripts/gen-tree.awk" flat.h]) + +sed -e 's/tree\.h/flat.h/' -e 's/ROOT/FLAT/' test0.c >test1.c +AT_CHECK([$CC -o test1$EXEEXT test1.c && ./test1$EXEEXT], [0], +[[1, 0 +2, 0 +3, 0 +0, 0 +]]) + +AT_CLEANUP + AT_SETUP([join.awk]) +AT_KEYWORDS([join awk script scripts]) JOIN="$AWK -f $builddir/scripts/join.awk --"