testing4/bf_test.sh
changeset 288 65731df141a5
parent 287 c493eaba6018
child 289 08b5ddbc7e55
equal deleted inserted replaced
287:c493eaba6018 288:65731df141a5
     1 #!/bin/bash
       
     2 set -e
       
     3 
       
     4 out=${1:-output}
       
     5 
       
     6 echo "" > $out
       
     7 
       
     8 echo "Below is the feedback for your submission of CW 8, Part 2." >> $out
       
     9 echo "" >> $out
       
    10 
       
    11 
       
    12 # compilation tests
       
    13 
       
    14 function scala_compile {
       
    15   (ulimit -t 30 -m 1024000 ; scala "$1" 2>> $out 1>> $out) 
       
    16 }
       
    17 
       
    18 # functional tests
       
    19 
       
    20 function scala_assert {
       
    21   (ulimit -t 30 -m 1024000 ; scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
       
    22 }
       
    23 
       
    24 # purity test
       
    25 
       
    26 function scala_vars {
       
    27    (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null)
       
    28 }
       
    29 
       
    30 
       
    31 # var, return, ListBuffer test
       
    32 #
       
    33 echo "bf.scala does not contain vars, returns etc?" >> $out
       
    34 
       
    35 if (scala_vars bf.scala)
       
    36 then
       
    37   echo "  --> fail" >> $out
       
    38   tsts0=$(( 1 ))
       
    39 else
       
    40   echo "  --> success" >> $out
       
    41   tsts0=$(( 0 )) 
       
    42 fi
       
    43 
       
    44 
       
    45 # compilation test
       
    46 if  [ $tsts0 -eq 0 ]
       
    47 then    
       
    48   echo "bf.scala runs?" >> $out
       
    49 
       
    50   if (scala_compile bf.scala)
       
    51   then
       
    52     echo "  --> success" >> $out
       
    53     tsts1=$(( 0 ))
       
    54   else
       
    55     echo "  --> scala bf.scala did not run successfully" >> $out
       
    56     tsts1=$(( 1 )) 
       
    57   fi
       
    58 else
       
    59   tsts1=$(( 1 ))     
       
    60 fi
       
    61 
       
    62 
       
    63 
       
    64 if [ $tsts1 -eq 0 ]
       
    65 then
       
    66   echo " sread(Map(), 2) == 0" >> $out
       
    67   echo " sread(Map(2 -> 1), 2) == 1" >> $out  
       
    68   echo " write(Map(), 1, 2) == Map(1 -> 2)" >> $out
       
    69   echo " write(Map(1 -> 0), 1, 2) == Map(1 -> 2)" >> $out
       
    70   
       
    71   if (scala_assert "bf.scala" "bf1a_test.scala")
       
    72   then
       
    73     echo "  --> success" >> $out
       
    74   else
       
    75     echo "  --> test failed" >> $out
       
    76   fi
       
    77 fi
       
    78 
       
    79 
       
    80 
       
    81 if [ $tsts1 -eq 0 ]
       
    82 then
       
    83     echo " jumpRight(\"[******]***\", 1, 0) == 8" >> $out
       
    84     echo " jumpRight(\"[**[*]*]***\", 1, 0) == 8" >> $out
       
    85     echo " jumpRight(\"[**[*]*]***\", 1, 0) == 8" >> $out
       
    86     echo " jumpRight(\"[**[***]***\", 1, 0) == 11" >> $out
       
    87     echo " jumpRight(\"[*[][]*]***\", 1, 0) == 8" >> $out
       
    88     echo " jumpLeft(\"[******]***\", 6, 0) == 1" >> $out
       
    89     echo " jumpLeft(\"[******]***\", 7, 0) == -1" >> $out
       
    90     echo " jumpLeft(\"[*[][]*]***\", 6, 0) == 1" >> $out
       
    91   
       
    92   if (scala_assert "bf.scala" "bf1b_test.scala")
       
    93   then
       
    94     echo "  --> success" >> $out
       
    95   else
       
    96     echo "  --> test failed" >> $out
       
    97   fi
       
    98 fi
       
    99 
       
   100 
       
   101 
       
   102 if [ $tsts1 -eq 0 ]
       
   103 then
       
   104   echo " start(\"[-]\", Map(0 -> 100)) == Map(0 -> 0)" >> $out
       
   105   echo " start(\"[->+<]\", Map(0 -> 10)) == Map(0 -> 0, 1 -> 10)" >> $out
       
   106   echo " start(\"[>>+>>+<<<<-]\", Map(0 -> 42)) == Map(0 -> 0, 2 -> 42, 4 -> 42)" >> $out
       
   107   echo " start({{hello world prg 1}}, Map()) == " >> $out
       
   108   echo "        Map(0 -> 0, 5 -> 33, 1 -> 0, 6 -> 10, 2 -> 72, 3 -> 100, 4 -> 87)" >> $out
       
   109 
       
   110   if (scala_assert "bf.scala" "bf1c_test.scala")
       
   111   then
       
   112     echo "  --> success" >> $out
       
   113   else
       
   114     echo "  --> test failed" >> $out
       
   115   fi
       
   116 fi
       
   117 
       
   118 
       
   119 
       
   120