# @(#)precedence_test 1.0 91/07/24 Maarten Litmaath
# test of relative precedences for `&&' and `||' operators

echo "\`Say' echos its argument. Its return value is of no interest."
case `echo -n` in
  '') Say () { echo -n "$*" ; } ;;
   *) Say () { echo "$*\c" ; } ;;
esac

echo "\`Truth' echos its argument and returns a TRUE result."
Truth () {
  Say $1;
  return 0;
}

echo "\`False' echos its argument and returns a FALSE result."
False () {
  Say $1;
  return 1;
}

echo ""

cmd1='$open $test1 && $test2 $close || $test3'
cmd2='$test1 || $open $test2 && $test3 $close'

grouping_sh=
grouping_C='( )'

test3='Say 3'

for i in 1 2
do
   eval proto=\$cmd$i

   for test1 in 'Truth 1' 'False 1'
   do
      for test2 in 'Truth 2' 'False 2'
      do
	 for precedence in sh C
	 do
	    eval set x \$grouping_$precedence
	    shift
	    open=${1-' '}
	    close=${2-' '}
	    eval cmd=\""$proto"\"
	    Say "$cmd   output="
	    output=`eval "$cmd"`
	    Say "$output"
	    read correct || { echo 'Input fubar.  Abort.' >&2; exit 1; }
	    test "X$output" = "X$correct" || echo "   correct=$correct"
	    echo ''
	 done

	 echo ''
      done
   done
done << EOF
12
12
123
123
13
13
13
13
13
1
13
1
123
123
12
12
EOF
