1 #!/usr/bin/bash
     
2 
     3 ./build.sh
     
4 
     5 function try {
     
6     # -q tells grep to not echo, just return match status
     
7     if echo "$1" | ./meow5 | grep -q "^$2\$"
     
8     then
     
9         printf '.'
    
10     else
    
11         echo
    
12         echo "Error!"
    
13         echo "Wanted:"
    
14         echo "-------------------------------------------"
    
15         echo "$1"
    
16         echo "$2"
    
17         echo "-------------------------------------------"
    
18         echo
    
19         echo "But got:"
    
20         echo "-------------------------------------------"
    
21         echo "$1"
    
22         echo "$1" | ./meow5
    
23         echo "-------------------------------------------"
    
24         echo
    
25         exit
    
26     fi
    
27 }
    
28 
    29 #   Input                  Expected Result
    
30 #   -------------------    ------------------------
    
31 try 'ps'                   ''
    
32 try '5 ps'                 '5 ' # note space
    
33 try '5 5 5 + ps'           '5 10 '
    
34 try '9 2 * ps'             '18 '
    
35 try '18 5 / ps'            '3 3 '
    
36 try '5 2 - ps'             '3 '
    
37 
    38 try '"Hello$\\\$\n" print' 'Hello$\\$'
    
39 
    40 try '"Hello" say'          'Hello'
    
41 
    42 try 'def five 5 ; five ps'   '5 '
    
43 
    44 try 'def m "M." print ;
    
45      m "" say'             'M.'
    
46 
    47 try 'def m "M." print ;
    
48      def m5 m m m m m ;
    
49      m5 "" say'            'M.M.M.M.M.'
    
50 
    51 try 'var x
    
52      4 x set
    
53      x get ps'             '4 '
    
54 
    55 try 'var x 
    
56      4 x set
    
57      def x? x get "x=$" say ;
    
58      x?'                   'x=4'
    
59 
    60 # immediate mode 'if'
    
61 try 'def t "true" print ;
    
62      "0=" print 0 ? t
    
63      ", 1=" print 1 ? t
    
64      "\n" print'           '0=, 1=true'
    
65 
    66 # compile mode 'if'
    
67 try 'def hi "Hi!" print ;
    
68      def maybe-hi ? hi ;
    
69      inspect hi
    
70      inspect maybe-hi
    
71      0 maybe-hi
    
72      1 maybe-hi
    
73      "\n" print'           'Hi!'
    
74 
    75 echo
    
76 echo Passed!