]> git.draconx.ca Git - cdecl99.git/blobdiff - tests/decl-good.at
libcdecl: Fix output regression with multiple declarators.
[cdecl99.git] / tests / decl-good.at
index 79cc6f9187739f57de263a9da8d7c13908857360..df570c8807c1800852d7e6530b7f725e2e63d1ba 100644 (file)
@@ -69,6 +69,24 @@ AT_DATA([expout],
 AT_CHECK([cdecl99 -f test.dat], [0], [expout])
 AT_CLEANUP])
 
+dnl SIMPLE_DECLS_SIMPLIFY([arg], [arg ...])
+dnl
+dnl Generate tests to validate the expected operation of the "simplify"
+dnl command.  The arguments are a quoted list of quoted items, with the
+dnl first item of each list being the input declaration and the second
+dnl item being the expected simplified output.
+dnl
+dnl The items should be related to each other as the user-visible test
+dnl group name is determined only by the first argument.
+m4_define([SIMPLE_DECLS_SIMPLIFY],
+[AT_SETUP([Simplify "m4_car($1)"m4_ifnblank([$2], [ etc.])])
+AT_DATA([test.dat],
+[m4_map_args([simplify m4_curry([_SIMPLE_DECL_ARG], [1])], $@)])
+AT_DATA([expout],
+[m4_map_args([m4_curry([_SIMPLE_DECL_ARG], [2])], $@)])
+AT_CHECK([cdecl99 -f test.dat], [0], [expout])
+AT_CLEANUP])
+
 dnl SIMPLE_DECLS(arg, [arg ...])
 m4_define([SIMPLE_DECLS],
 [SIMPLE_DECLS_EXPLAIN($@)
@@ -118,3 +136,15 @@ SIMPLE_DECLS_EXPLAIN(
     [declare as as function (function) returning returning]],
   [[pointer *declare], [declare declare as pointer to pointer]],
   [[type to], [declare to as type]])
+
+dnl Test the explain command with multiple declarators, which produces
+dnl multiple lines of English output.
+SIMPLE_DECLS_EXPLAIN(
+  [[int x, y], [m4_n([declare x as int])declare y as int]])
+
+dnl Test the simplify command with multiple declarators.  This is the only
+dnl command in cdecl99 which will print a single C declaration with more than
+dnl one full declarator.
+SIMPLE_DECLS_SIMPLIFY(
+  [[int x, y], [int x, y]],
+  [[int (x), ((y))], [int x, y]])