home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ckscripts / iftest < prev    next >
Text File  |  2020-01-01  |  7KB  |  261 lines

  1. #!/usr/local/bin/kermit
  2. #
  3. # Torture-test for new combined IF/XIF command
  4. #
  5. # First: compound Boolean conditions
  6.  
  7. .\%z = 0
  8. .\%m = 1
  9. .\%b = 0
  10. .\%g = 0
  11.  
  12. define GOOD { increment \%g, echo GOOD:\%g  }
  13. define BAD { increment \%b, echo BAD:\%b  }
  14.  
  15. echo Executing \%0...
  16. set tak echo on
  17. if ( = \%m 1 || = \%m 0 ) { GOOD } else { BAD }
  18. if ( = \%m 1 && = \%m 0 ) { BAD } else { GOOD }
  19. if ( \%z || 0 ) { BAD } else { GOOD }
  20. if ( \%m || 0 ) { GOOD } else { BAD }
  21. if ( exist \%0 && > \%m 0 )  { GOOD } else { BAD }
  22. if ( = \%m 1 && ( = \%z 0 || = \%z 999 ) ) { GOOD } else { BAD }
  23. if 1 { GOOD } else { BAD }
  24. if \%m { GOOD } else { BAD }
  25. if ( 1 )  { GOOD } else { BAD }
  26. if ( \%m )  { GOOD } else { BAD }
  27. if ( not 1 ) { BAD } else { GOOD }
  28. if ( ( 1 & \%m ) ) { GOOD } else { BAD }
  29. if ( not ( 1 & \%m ) ) { BAD } else { GOOD }
  30. if ( true ) { GOOD } else { BAD }
  31. if ( not true ) { BAD } else { GOOD }
  32. if ( false ) { BAD } else { GOOD }
  33. if ( not false ) { GOOD } else { BAD }
  34. if ( ( 5 & 1 ) && ( 6 & 2 ) ) { GOOD } else { BAD }
  35. if ( (5&1) && (6&2) ) { GOOD } else { BAD }
  36. if ( not ( 5 & 1 ) && ( 6 & 2 ) ) { BAD } else { GOOD }
  37. if ( not ( ( 5 & 1 ) && ( 6 & 2 ) ) ) { BAD } else { GOOD }
  38. if ( not not ( ( 5 & 1 ) && ( 6 & 2 ) ) ) { GOOD } else { BAD }
  39. if ( > \%z 0 ) { BAD } else { GOOD }
  40. if ( > \%z+1 0 ) { GOOD } else { BAD }
  41. if ( > (\%z+1) 0 ) { GOOD } else { BAD }
  42. if ( > \%z 0 || > \%m \%z && = \%m 0 ) { BAD } else { GOOD }
  43. if ( > \%z 0 || ( > \%m \%z && = \%m 0 ) ) { BAD } else { GOOD }
  44. if ( ( > \%z 0 || > \%m \%z ) && = \%m 0 ) { BAD } else { GOOD }
  45. echo {----}
  46. if ( false || false && false || true ) { GOOD } else { BAD }
  47. if ( false || ( false && false ) || true ) { GOOD } else { BAD }
  48. if ( ( false || false ) && ( false || true ) ) { BAD } else { GOOD }
  49. echo {----}
  50. { assert = \%z \%m, status, if ok { BAD } else { GOOD } }
  51. { assert != \%z \%m, status, if not ok { BAD } else { GOOD } }
  52. { assert true, status, if not ok { BAD } else { GOOD } }
  53. { assert false, status, if ok { BAD } else { GOOD } }
  54. { assert not true, status, if ok { BAD } else { GOOD } }
  55. { assert not false, status, if not ok { BAD } else { GOOD } }
  56. { assert ( true ), status, if not ok { BAD } else { GOOD } }
  57. { assert ( false ), status, if ok { BAD } else { GOOD } }
  58. { assert ( not true ), status, if ok { BAD } else { GOOD } }
  59. { assert ( not false ), status, if not ok { BAD } else { GOOD } }
  60. { assert ( not not true ), status, if not ok { BAD } else { GOOD } }
  61. { assert ( not not false ), status, if ok { BAD } else { GOOD } }
  62. { assert ( not ( not true ) ), status, if not ok { BAD } else { GOOD } }
  63. { assert ( not ( not false ) ), status, if ok { BAD } else { GOOD } }
  64. { assert ( not ( not true ) ), status, if not ok { BAD } else { GOOD } }
  65. { assert ( not ( not false ) ), status, if ok { BAD } else { GOOD } }
  66. { assert ( not ( not ( not false ) ) ), status, -
  67.   if not ok { BAD } else { GOOD } }
  68. { assert ( not not not false ), status, if not ok { BAD } else { GOOD } }
  69. echo {----}
  70. { assert ( true || false ), status, if not ok  { BAD } else { GOOD } }
  71. { assert ( not true || false ), status, if ok  { BAD } else { GOOD } }
  72. { assert ( not ( true || false ) ), status, if ok { BAD } else { GOOD } }
  73. { assert ( not ( true || false ) && ( false || true ) ), -
  74.   status, -
  75.   if ok  { BAD } else { GOOD } }
  76. echo {----}
  77. .\%i = 0
  78. .\%j = 1
  79. while ( < \%i 10 && < \%j 10 ) { echo \%i \%j, incr \%i, incr \%j }
  80. if ok { GOOD } else { BAD }
  81. set take echo off
  82. echo {----}
  83. echo Summary: \%g { GOOD }, \%b { BAD }.
  84. echo
  85. echo Testing if--else if--else if--else...
  86. echo You should see the names of the digits 1 through 10 in order
  87. echo and then "None of the above".
  88. echo
  89. for \%i 1 11 1 {
  90.     if = \%i 1 {
  91.         echo One
  92.     } else if = \%i 2 {
  93.     echo Two
  94.     } else if = \%i 3 {
  95.     echo Three
  96.     } else if = \%i 4 {
  97.     echo Four
  98.     } else if = \%i 5 {
  99.     echo Five
  100.     } else if = \%i 6 {
  101.     echo Six
  102.     } else if = \%i 7 {
  103.     echo Seven
  104.     } else if = \%i 8 {
  105.     echo Eight
  106.     } else if = \%i 9 {
  107.     echo Nine
  108.     } else if = \%i 10 {
  109.     echo Ten
  110.     } else {
  111.         echo None of the above.
  112.     }
  113. }
  114.  
  115. echo Same thing again with separated ELSE parts:
  116. echo
  117. for \%i 1 11 1 {
  118.     if = \%i 1 echo Uno
  119.     else if = \%i 2 echo Dos
  120.     else if = \%i 3 echo Tres
  121.     else if = \%i 4 echo Cuatro
  122.     else if = \%i 5 echo Cinco
  123.     else if = \%i 6 echo Seis
  124.     else if = \%i 7 echo Siete
  125.     else if = \%i 8 echo Ocho
  126.     else if = \%i 9 echo Nueve
  127.     else if = \%i 10 echo Diez
  128.     else echo Ninguna de las anteriores.
  129. }
  130.  
  131. echo
  132. echo Checking preservation of macro args in compound IF statements...
  133. define yy {
  134.     if def \%3 {
  135.         echo Three args:
  136.         for \%i 1 3 1 { echo { "\&_[\%i]" } }
  137.     } else if def \%2 {
  138.         echo Two args:
  139.         for \%i 1 2 1 { echo { "\&_[\%i]" } }
  140.     } else if def \%1 {
  141.         echo One arg:
  142.         for \%i 1 1 1 { echo { "\&_[\%i]" } }
  143.     } else {
  144.         echo No args.
  145.     }
  146. }
  147. yy one two three
  148. yy alpha beta
  149. yy justme
  150. yy
  151.  
  152.  
  153. echo
  154. define xx {
  155.    echo Checking \\v(return) from inside IF/FOR/WHILE...
  156.    return 888
  157. }
  158. do xx
  159. if true {
  160.     for \%i 1 1 1 {
  161.         while true {
  162.             if false {
  163.                 echo BAD
  164.             } else {
  165.                 if equal "\v(return)" "888" echo GOOD
  166.                 break
  167.             }
  168.         }
  169.     }
  170. }
  171. echo {----}
  172. echo Testing separated compound ELSE parts...
  173. echo You should see the names of the digits 1-4.
  174. if true {
  175.     echo "  one"
  176.     echo "  two"
  177. }
  178. else {
  179.     echo "  three"
  180.     echo "  four"
  181. }
  182. if false {
  183.     echo "  one"
  184.     echo "  two"
  185. }
  186. else {
  187.     echo "  three"
  188.     echo "  four"
  189. }
  190. echo
  191. echo In each of the following tests you should see the names
  192. echo of the first 4 Greek letters.
  193.  
  194. def xx {
  195.     if \%1 {
  196.     echo "  \%2"
  197.     echo "  \%3"
  198.     } else {
  199.     echo "  \%4"
  200.     echo "  \%5"
  201.     }
  202. }
  203. xx true  alpha beta gamma delta
  204. xx false alpha beta gamma delta
  205.  
  206. echo
  207. echo Again...
  208.  
  209. def xx {
  210.     if \%1 {
  211.     echo "  \%2"
  212.     echo "  \%3"
  213.     }
  214.     else {
  215.     echo "  \%4"
  216.     echo "  \%5"
  217.     }
  218. }
  219. xx true  alpha beta gamma delta
  220. xx false alpha beta gamma delta
  221.  
  222. echo
  223. echo And again...
  224.  
  225. def xx {
  226.     if \%1 { echo "  \%2", echo "  \%3"  } else { echo "  \%4",    echo "  \%5" }
  227. }
  228. xx true  alpha beta gamma delta
  229. xx false alpha beta gamma delta
  230.  
  231. echo
  232. echo And again...
  233.  
  234. def xx {
  235.     if \%1 { echo "  \%2", echo "  \%3"  }
  236.     else { echo "  \%4", echo "  \%5" }
  237. }
  238. xx true  alpha beta gamma delta
  239. xx false alpha beta gamma delta
  240.  
  241. echo
  242. echo And once more...
  243.  
  244. def xx {
  245.     if \%1 echo "  \%2\v(newline)  \%3"
  246.     else   echo "  \%4\v(newline)  \%5"
  247. }
  248. xx true  alpha beta gamma delta
  249. xx false alpha beta gamma delta
  250.  
  251. echo
  252. echo Last one...
  253.  
  254. def yy {
  255.     { echo "  \%1", echo "  \%2", echo "  \%3", echo "  \%4" }
  256. }
  257. yy alpha beta gamma delta
  258.  
  259. echo
  260. exit 0 Done.
  261.