improve of cmpl.
[bush.git] / tests / precedence.tests
blob111bd2314d7ab77d8058eefa692abab5d7a5f78e
1 # @(#)precedence_test 1.0 91/07/24 Maarten Litmaath
3 #   This program is free software: you can redistribute it and/or modify
4 #   it under the terms of the GNU General Public License as published by
5 #   the Free Software Foundation, either version 3 of the License, or
6 #   (at your option) any later version.
8 #   This program is distributed in the hope that it will be useful,
9 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #   GNU General Public License for more details.
13 #   You should have received a copy of the GNU General Public License
14 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 # test of relative precedences for `&&' and `||' operators
19 echo "\`Say' echos its argument. Its return value is of no interest."
20 case `echo -n` in
21   '') Say () { echo -n "$*" ; } ;;
22    *) Say () { echo "$*\c" ; } ;;
23 esac
25 echo "\`Truth' echos its argument and returns a TRUE result."
26 Truth () {
27   Say $1;
28   return 0;
31 echo "\`False' echos its argument and returns a FALSE result."
32 False () {
33   Say $1;
34   return 1;
37 echo ""
39 cmd1='$open $test1 && $test2 $close || $test3'
40 cmd2='$test1 || $open $test2 && $test3 $close'
42 grouping_sh=
43 grouping_C='( )'
45 test3='Say 3'
47 for i in 1 2
49    eval proto=\$cmd$i
51    for test1 in 'Truth 1' 'False 1'
52    do
53       for test2 in 'Truth 2' 'False 2'
54       do
55          for precedence in sh C
56          do
57             eval set x \$grouping_$precedence
58             shift
59             open=${1-' '}
60             close=${2-' '}
61             eval cmd=\""$proto"\"
62             Say "$cmd   output="
63             output=`eval "$cmd"`
64             Say "$output"
65             read correct || { echo 'Input fubar.  Abort.' >&2; exit 1; }
66             test "X$output" = "X$correct" || echo "   correct=$correct"
67             echo ''
68          done
70          echo ''
71       done
72    done
73 done << EOF
76 123
77 123
86 123
87 123
90 EOF