home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
ckscripts
/
iftest
< prev
next >
Wrap
Text File
|
2020-01-01
|
7KB
|
261 lines
#!/usr/local/bin/kermit
#
# Torture-test for new combined IF/XIF command
#
# First: compound Boolean conditions
.\%z = 0
.\%m = 1
.\%b = 0
.\%g = 0
define GOOD { increment \%g, echo GOOD:\%g }
define BAD { increment \%b, echo BAD:\%b }
echo Executing \%0...
set tak echo on
if ( = \%m 1 || = \%m 0 ) { GOOD } else { BAD }
if ( = \%m 1 && = \%m 0 ) { BAD } else { GOOD }
if ( \%z || 0 ) { BAD } else { GOOD }
if ( \%m || 0 ) { GOOD } else { BAD }
if ( exist \%0 && > \%m 0 ) { GOOD } else { BAD }
if ( = \%m 1 && ( = \%z 0 || = \%z 999 ) ) { GOOD } else { BAD }
if 1 { GOOD } else { BAD }
if \%m { GOOD } else { BAD }
if ( 1 ) { GOOD } else { BAD }
if ( \%m ) { GOOD } else { BAD }
if ( not 1 ) { BAD } else { GOOD }
if ( ( 1 & \%m ) ) { GOOD } else { BAD }
if ( not ( 1 & \%m ) ) { BAD } else { GOOD }
if ( true ) { GOOD } else { BAD }
if ( not true ) { BAD } else { GOOD }
if ( false ) { BAD } else { GOOD }
if ( not false ) { GOOD } else { BAD }
if ( ( 5 & 1 ) && ( 6 & 2 ) ) { GOOD } else { BAD }
if ( (5&1) && (6&2) ) { GOOD } else { BAD }
if ( not ( 5 & 1 ) && ( 6 & 2 ) ) { BAD } else { GOOD }
if ( not ( ( 5 & 1 ) && ( 6 & 2 ) ) ) { BAD } else { GOOD }
if ( not not ( ( 5 & 1 ) && ( 6 & 2 ) ) ) { GOOD } else { BAD }
if ( > \%z 0 ) { BAD } else { GOOD }
if ( > \%z+1 0 ) { GOOD } else { BAD }
if ( > (\%z+1) 0 ) { GOOD } else { BAD }
if ( > \%z 0 || > \%m \%z && = \%m 0 ) { BAD } else { GOOD }
if ( > \%z 0 || ( > \%m \%z && = \%m 0 ) ) { BAD } else { GOOD }
if ( ( > \%z 0 || > \%m \%z ) && = \%m 0 ) { BAD } else { GOOD }
echo {----}
if ( false || false && false || true ) { GOOD } else { BAD }
if ( false || ( false && false ) || true ) { GOOD } else { BAD }
if ( ( false || false ) && ( false || true ) ) { BAD } else { GOOD }
echo {----}
{ assert = \%z \%m, status, if ok { BAD } else { GOOD } }
{ assert != \%z \%m, status, if not ok { BAD } else { GOOD } }
{ assert true, status, if not ok { BAD } else { GOOD } }
{ assert false, status, if ok { BAD } else { GOOD } }
{ assert not true, status, if ok { BAD } else { GOOD } }
{ assert not false, status, if not ok { BAD } else { GOOD } }
{ assert ( true ), status, if not ok { BAD } else { GOOD } }
{ assert ( false ), status, if ok { BAD } else { GOOD } }
{ assert ( not true ), status, if ok { BAD } else { GOOD } }
{ assert ( not false ), status, if not ok { BAD } else { GOOD } }
{ assert ( not not true ), status, if not ok { BAD } else { GOOD } }
{ assert ( not not false ), status, if ok { BAD } else { GOOD } }
{ assert ( not ( not true ) ), status, if not ok { BAD } else { GOOD } }
{ assert ( not ( not false ) ), status, if ok { BAD } else { GOOD } }
{ assert ( not ( not true ) ), status, if not ok { BAD } else { GOOD } }
{ assert ( not ( not false ) ), status, if ok { BAD } else { GOOD } }
{ assert ( not ( not ( not false ) ) ), status, -
if not ok { BAD } else { GOOD } }
{ assert ( not not not false ), status, if not ok { BAD } else { GOOD } }
echo {----}
{ assert ( true || false ), status, if not ok { BAD } else { GOOD } }
{ assert ( not true || false ), status, if ok { BAD } else { GOOD } }
{ assert ( not ( true || false ) ), status, if ok { BAD } else { GOOD } }
{ assert ( not ( true || false ) && ( false || true ) ), -
status, -
if ok { BAD } else { GOOD } }
echo {----}
.\%i = 0
.\%j = 1
while ( < \%i 10 && < \%j 10 ) { echo \%i \%j, incr \%i, incr \%j }
if ok { GOOD } else { BAD }
set take echo off
echo {----}
echo Summary: \%g { GOOD }, \%b { BAD }.
echo
echo Testing if--else if--else if--else...
echo You should see the names of the digits 1 through 10 in order
echo and then "None of the above".
echo
for \%i 1 11 1 {
if = \%i 1 {
echo One
} else if = \%i 2 {
echo Two
} else if = \%i 3 {
echo Three
} else if = \%i 4 {
echo Four
} else if = \%i 5 {
echo Five
} else if = \%i 6 {
echo Six
} else if = \%i 7 {
echo Seven
} else if = \%i 8 {
echo Eight
} else if = \%i 9 {
echo Nine
} else if = \%i 10 {
echo Ten
} else {
echo None of the above.
}
}
echo Same thing again with separated ELSE parts:
echo
for \%i 1 11 1 {
if = \%i 1 echo Uno
else if = \%i 2 echo Dos
else if = \%i 3 echo Tres
else if = \%i 4 echo Cuatro
else if = \%i 5 echo Cinco
else if = \%i 6 echo Seis
else if = \%i 7 echo Siete
else if = \%i 8 echo Ocho
else if = \%i 9 echo Nueve
else if = \%i 10 echo Diez
else echo Ninguna de las anteriores.
}
echo
echo Checking preservation of macro args in compound IF statements...
define yy {
if def \%3 {
echo Three args:
for \%i 1 3 1 { echo { "\&_[\%i]" } }
} else if def \%2 {
echo Two args:
for \%i 1 2 1 { echo { "\&_[\%i]" } }
} else if def \%1 {
echo One arg:
for \%i 1 1 1 { echo { "\&_[\%i]" } }
} else {
echo No args.
}
}
yy one two three
yy alpha beta
yy justme
yy
echo
define xx {
echo Checking \\v(return) from inside IF/FOR/WHILE...
return 888
}
do xx
if true {
for \%i 1 1 1 {
while true {
if false {
echo BAD
} else {
if equal "\v(return)" "888" echo GOOD
break
}
}
}
}
echo {----}
echo Testing separated compound ELSE parts...
echo You should see the names of the digits 1-4.
if true {
echo " one"
echo " two"
}
else {
echo " three"
echo " four"
}
if false {
echo " one"
echo " two"
}
else {
echo " three"
echo " four"
}
echo
echo In each of the following tests you should see the names
echo of the first 4 Greek letters.
def xx {
if \%1 {
echo " \%2"
echo " \%3"
} else {
echo " \%4"
echo " \%5"
}
}
xx true alpha beta gamma delta
xx false alpha beta gamma delta
echo
echo Again...
def xx {
if \%1 {
echo " \%2"
echo " \%3"
}
else {
echo " \%4"
echo " \%5"
}
}
xx true alpha beta gamma delta
xx false alpha beta gamma delta
echo
echo And again...
def xx {
if \%1 { echo " \%2", echo " \%3" } else { echo " \%4", echo " \%5" }
}
xx true alpha beta gamma delta
xx false alpha beta gamma delta
echo
echo And again...
def xx {
if \%1 { echo " \%2", echo " \%3" }
else { echo " \%4", echo " \%5" }
}
xx true alpha beta gamma delta
xx false alpha beta gamma delta
echo
echo And once more...
def xx {
if \%1 echo " \%2\v(newline) \%3"
else echo " \%4\v(newline) \%5"
}
xx true alpha beta gamma delta
xx false alpha beta gamma delta
echo
echo Last one...
def yy {
{ echo " \%1", echo " \%2", echo " \%3", echo " \%4" }
}
yy alpha beta gamma delta
echo
exit 0 Done.