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