|         |      1 #!/bin/bash | 
|         |      2 set -euo pipefail | 
|         |      3  | 
|         |      4  | 
|         |      5 out=${1:-output} | 
|         |      6  | 
|         |      7 echo -e "" > $out | 
|         |      8  | 
|         |      9 echo -e "Below is the feedback for your submission of CW 9, Part 2." >> $out | 
|         |     10 echo -e "" >> $out | 
|         |     11  | 
|         |     12  | 
|         |     13 # compilation tests | 
|         |     14  | 
|         |     15 function scala_compile { | 
|         |     16   (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc "$1" 2>> $out 1>> $out)    | 
|         |     17 } | 
|         |     18  | 
|         |     19 # functional tests | 
|         |     20  | 
|         |     21 function scala_assert { | 
|         |     22   (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)  | 
|         |     23 } | 
|         |     24  | 
|         |     25 # purity test | 
|         |     26  | 
|         |     27 function scala_vars { | 
|         |     28    (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null) | 
|         |     29 } | 
|         |     30  | 
|         |     31  | 
|         |     32 # var, return, ListBuffer test | 
|         |     33 # | 
|         |     34 echo -e "postfix.scala does not contain vars, returns etc?" >> $out | 
|         |     35  | 
|         |     36 if (scala_vars postfix.scala) | 
|         |     37 then | 
|         |     38   echo -e "   --> fail (make triple-sure your program conforms to the required format)" >> $out  | 
|         |     39   tsts0=$(( 0 )) | 
|         |     40 else | 
|         |     41   echo -e "  --> success" >> $out | 
|         |     42   tsts0=$(( 0 ))  | 
|         |     43 fi | 
|         |     44  | 
|         |     45  | 
|         |     46 # compilation test | 
|         |     47  | 
|         |     48 if  [ $tsts0 -eq 0 ] | 
|         |     49 then     | 
|         |     50   echo -e "postfix.scala runs?" >> $out | 
|         |     51  | 
|         |     52   if (scala_compile postfix.scala) | 
|         |     53   then | 
|         |     54     echo -e "  --> yes" >> $out | 
|         |     55     tsts1=$(( 0 )) | 
|         |     56   else | 
|         |     57     echo -e "  --> SCALA DID NOT RUN POSTFIX.SCALA\n" >> $out | 
|         |     58     tsts1=$(( 1 ))  | 
|         |     59   fi | 
|         |     60 else | 
|         |     61   tsts1=$(( 1 ))      | 
|         |     62 fi | 
|         |     63  | 
|         |     64 ### postfix tests | 
|         |     65  | 
|         |     66 if [ $tsts1 -eq 0 ] | 
|         |     67 then | 
|         |     68   echo -e " syard(split(\"3 + 4 * ( 2 - 1 )\")) == List(\"3\", \"4\", \"2\", \"1\", \"-\", \"*\", \"+\")" >> $out | 
|         |     69   echo -e " syard(split(\"( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )\")) == List(\"3\", \"4\", \"5\", \"+\", \"+\")" >> $out | 
|         |     70   echo -e " syard(split(\"5 + 7 / 2\")) == List(\"5\", \"7\", \"2\", \"/\", \"+\")" >> $out | 
|         |     71   echo -e " syard(split(\"5 * 7 / 2\")) == List(\"5\", \"7\", \"*\", \"2\", \"/\")" >> $out | 
|         |     72    | 
|         |     73   if (scala_assert "postfix.scala" "postfix_test7.scala") | 
|         |     74   then | 
|         |     75     echo -e "  --> success" >> $out | 
|         |     76   else | 
|         |     77     echo -e "  --> \n ONE TEST FAILED\n" >> $out | 
|         |     78   fi | 
|         |     79 fi | 
|         |     80  | 
|         |     81  | 
|         |     82  | 
|         |     83 if [ $tsts1 -eq 0 ] | 
|         |     84 then | 
|         |     85   echo -e " compute(syard(split(\"3 + 4 * ( 2 - 1 )\"))) == 7" >> $out | 
|         |     86   echo -e " compute(syard(split(\"10 + 12 * 33\"))) == 406" >> $out | 
|         |     87   echo -e " compute(syard(split(\"( 5 + 7 ) * 2\"))) == 24" >> $out | 
|         |     88   echo -e " compute(syard(split(\"5 + 7 / 2\"))) == 8" >> $out | 
|         |     89   echo -e " compute(syard(split(\"5 * 7 / 2\"))) == 17" >> $out | 
|         |     90   echo -e " compute(syard(split(\"9 + 24 / ( 7 - 3 )\"))) == 15" >> $out | 
|         |     91    | 
|         |     92   if (scala_assert "postfix.scala" "postfix_test8.scala") | 
|         |     93   then | 
|         |     94     echo -e "  --> success" >> $out | 
|         |     95   else | 
|         |     96     echo -e "  --> \n ONE TEST FAILED\n" >> $out | 
|         |     97   fi | 
|         |     98 fi | 
|         |     99  | 
|         |    100  | 
|         |    101  | 
|         |    102 ### postfix2 tests | 
|         |    103  | 
|         |    104 # var, return, ListBuffer test | 
|         |    105 # | 
|         |    106 echo -e "\n\npostfix2.scala does not contain vars, returns etc?" >> $out | 
|         |    107  | 
|         |    108 if (scala_vars postfix2.scala) | 
|         |    109 then | 
|         |    110   echo -e "   --> fail (make triple-sure your program conforms to the required format)" >> $out  | 
|         |    111   tsts0=$(( 0 )) | 
|         |    112 else | 
|         |    113   echo -e "  --> success" >> $out | 
|         |    114   tsts0=$(( 0 ))  | 
|         |    115 fi | 
|         |    116  | 
|         |    117  | 
|         |    118 # compilation test | 
|         |    119  | 
|         |    120 if  [ $tsts0 -eq 0 ] | 
|         |    121 then     | 
|         |    122   echo -e "postfix2.scala runs?" >> $out | 
|         |    123  | 
|         |    124   if (scala_compile postfix2.scala) | 
|         |    125   then | 
|         |    126     echo -e "  --> yes" >> $out | 
|         |    127     tsts1=$(( 0 )) | 
|         |    128   else | 
|         |    129     echo -e "  --> SCALA DID NOT RUN POSTFIX2.SCALA\n" >> $out | 
|         |    130     tsts1=$(( 1 ))  | 
|         |    131   fi | 
|         |    132 else | 
|         |    133   tsts1=$(( 1 ))      | 
|         |    134 fi | 
|         |    135  | 
|         |    136  | 
|         |    137 if [ $tsts1 -eq 0 ] | 
|         |    138 then | 
|         |    139   echo -e " syard(split(\"3 + 4 * ( 2 - 1 )\")) == List(\"3\", \"4\", \"2\", \"1\", \"-\", \"*\", \"+\")" >> $out | 
|         |    140   echo -e " syard(split(\"( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )\")) == List(\"3\", \"4\", \"5\", \"+\", \"+\")" >> $out | 
|         |    141   echo -e " syard(split(\"5 + 7 / 2\")) == List(\"5\", \"7\", \"2\", \"/\", \"+\")" >> $out | 
|         |    142   echo -e " syard(split(\"5 * 7 / 2\")) == List(\"5\", \"7\", \"*\", \"2\", \"/\")" >> $out | 
|         |    143   echo -e " syard(split(\"3 + 4 * 8 / ( 5 - 1 ) ^ 2 ^ 3\")) == " >> $out | 
|         |    144   echo -e "         List(\"3\", \"4\", \"8\", \"*\", \"5\", \"1\", \"-\", \"2\", \"3\", \"^\", \"^\", \"/\", \"+\")" >> $out | 
|         |    145   echo -e " " >> $out  | 
|         |    146   echo -e " compute(syard(split(\"3 + 4 * ( 2 - 1 )\"))) == 7" >> $out | 
|         |    147   echo -e " compute(syard(split(\"10 + 12 * 33\"))) == 406" >> $out | 
|         |    148   echo -e " compute(syard(split(\"( 5 + 7 ) * 2\"))) == 24" >> $out | 
|         |    149   echo -e " compute(syard(split(\"5 + 7 / 2\"))) == 8" >> $out | 
|         |    150   echo -e " compute(syard(split(\"5 * 7 / 2\"))) == 17" >> $out | 
|         |    151   echo -e " compute(syard(split(\"9 + 24 / ( 7 - 3 )\"))) == 15" >> $out | 
|         |    152   echo -e " compute(syard(split(\"4 ^ 3 ^ 2\"))) == 262144" >> $out | 
|         |    153   echo -e " compute(syard(split(\"4 ^ ( 3 ^ 2 )\"))) == 262144" >> $out | 
|         |    154   echo -e " compute(syard(split(\"( 4 ^ 3 ) ^ 2\"))) == 4096" >> $out | 
|         |    155   echo -e " compute(syard(split(\"( 3 + 1 ) ^ 2 ^ 3\"))) == 65536" >> $out | 
|         |    156    | 
|         |    157   if (scala_assert "postfix2.scala" "postfix_test9.scala") | 
|         |    158   then | 
|         |    159     echo -e "  --> success" >> $out | 
|         |    160   else | 
|         |    161     echo -e "  --> \n ONE TEST FAILED\n" >> $out | 
|         |    162   fi | 
|         |    163 fi | 
|         |    164  |