diff options
Diffstat (limited to 'testcases-case')
-rw-r--r-- | testcases-case | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/testcases-case b/testcases-case new file mode 100644 index 0000000..6e62412 --- /dev/null +++ b/testcases-case @@ -0,0 +1,54 @@ +1: +$cppawk ' +#include <case.h> +BEGIN { +#if defined case_temps && defined case && defined of && \ + defined matching && defined cbreak && defined otherwise + print 1 +#endif +}' +: +1 +-- +2: +printf "%s\n" foo bar xyzzy x b | $cppawk ' +#include <case.h> +{ + case ($0) { + of ("foo") + print "** foo case: fallthrough!" + cfall; + of ("bar", "xyzzy") { + print "** bar/xyzzy case" + cbreak; + } + matching (/x/) + print "** /x/ case" + cbreak; + otherwise + print "** default" + cbreak; + } +}' +: +** foo case: fallthrough! +** bar/xyzzy case +** bar/xyzzy case +** bar/xyzzy case +** /x/ case +** default +-- +3: +$cppawk ' +#include <case.h> +function f(arg, case_temps) +{ + case (arg) { + of (1, 2, 3) cret(arg * 10) + otherwise cret(-arg) + } +} + +BEGIN { print f(1), f(2), f(3), f(4) }' +: +10 20 30 -4 |