From 772b1e013bb0068d7347d0bbe2ff73c67358ee1b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 3 Dec 2015 11:04:48 +0200 Subject: Implement if-else conditions if if! elif elif! else The expression should evaluate to true of false. The if! and elif! versions are provided as shortcuts to writing if (!...). See tests/if-else for examples. --- tests/if-else/buildfile | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/if-else/test.out | 9 ++++ tests/if-else/test.sh | 3 ++ 3 files changed, 126 insertions(+) create mode 100644 tests/if-else/buildfile create mode 100644 tests/if-else/test.out create mode 100755 tests/if-else/test.sh (limited to 'tests') diff --git a/tests/if-else/buildfile b/tests/if-else/buildfile new file mode 100644 index 0000000..30da40f --- /dev/null +++ b/tests/if-else/buildfile @@ -0,0 +1,114 @@ +#else # else without if +#elif # elif without if +#elif! # elif! without if +#if # expected if-expression +#if test # expected true or false +#if true # expected { +#x +#if true # expected newline after { +#{x +#if true # expected newline after } +#{ +#}x + +if true +{ + print 1 +} +else +{ + print 0 +} + +if! true +{ + print 0 +} +else +{ + print 1 +} + +if false +{ + print 0 +} +else +{ + print 1 +} + +if false +{ + print 0 +} +elif true +{ + print 1 +} +else +{ + print 0 +} + +if true +{ + print 1 +} +elif true +{ + print 0 +} +else +{ + print 0 +} + +# Empty block +# +if true +{ +} +else +{ + print 0 +} + +# Nested if-else +# +if true +{ + if true + { + print 1 + } +} +else +{ + if true + { + print 0 + } +} + +t = true +f = false + +if $t +{ + print 1 +} + +if! $f +{ + print 1 +} + +./: + +# EOF test. +# +if true +{ + print 1 +} diff --git a/tests/if-else/test.out b/tests/if-else/test.out new file mode 100644 index 0000000..bb08505 --- /dev/null +++ b/tests/if-else/test.out @@ -0,0 +1,9 @@ +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/tests/if-else/test.sh b/tests/if-else/test.sh new file mode 100755 index 0000000..b898b3c --- /dev/null +++ b/tests/if-else/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +valgrind -q b -q | diff -u test.out - -- cgit v1.1