logmsg "Basic && and || support"

echo first && echo second
echo third || echo fourth
true && false ; echo "true && false: $status"
true || false ; echo "true || false: $status"
true && false || true ; echo "true && false || true: $status"

logmsg "&& and || in if statements"

if true || false ; echo "if test 1 ok" ; end
if true && false ; else; echo "if test 2 ok" ; end
if true && false ; or true ; echo "if test 3 ok" ; end
if [ 0 = 1 ] || [ 5 -ge 3 ] ; echo "if test 4 ok"; end

logmsg "&& and || in while statements"

set alpha 0
set beta 0
set gamma 0
set delta 0
while [ $alpha -lt 2 ] && [ $beta -lt 3 ]
      or [ $gamma -lt 4 ] || [ $delta -lt 5 ]
    echo $alpha $beta $gamma
    set alpha ( math $alpha + 1 )
    set beta ( math $beta + 1 )
    set gamma ( math $gamma + 1 )
    set delta ( math $delta + 1 )
end

logmsg "Nots"

true && ! false ; echo $status
not true && ! false ; echo $status
not not not true ; echo $status
not ! ! not true ; echo $status
not ! echo not ! ; echo $status

logmsg "Complex scenarios"

begin; echo 1 ; false ; end || begin ; echo 2 && echo 3 ; end

if false && true
   or not false
   echo 4
end
