]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/scripts.at
gen-tree.awk: Add options to tweak the strtab output.
[dxcommon.git] / tests / scripts.at
index 4a838077250eaa6c5a6c8be1e433cbc0acbc3837..dcbcce56ead507575e2e45f83920daa05907bad6 100644 (file)
@@ -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.def >tree.h])
+
+AT_DATA([test0.c],
+[[float tree_strtab = 0;
+#define a []
+#define b []
+#define c []
+#define e []
+#define f []
+#include "tree.h"
+#include <stdio.h>
+
+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.def >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 --"