|         |      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  |