testing5/bf_test.sh
changeset 348 194d6ee45800
parent 347 0b727d1a8184
child 349 ef4bb09a01b7
equal deleted inserted replaced
347:0b727d1a8184 348:194d6ee45800
     1 #!/bin/bash
       
     2 set -euo pipefail
       
     3 
       
     4 out=${1:-output}
       
     5 
       
     6 echo -e "" > $out
       
     7 
       
     8 echo -e "Below is the feedback for your submission of CW 10." >> $out
       
     9 echo -e "" >> $out
       
    10 
       
    11 
       
    12 # compilation tests
       
    13 
       
    14 function scala_compile {
       
    15    (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out)
       
    16 }
       
    17 
       
    18 # functional tests
       
    19 
       
    20 function scala_assert {
       
    21   (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" -- "$2" 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 -e "bf.scala does not contain vars, returns etc?" >> $out
       
    34 
       
    35 if (scala_vars bf.scala)
       
    36 then
       
    37   echo -e "   --> FAIL (make triple-sure your program conforms to the required format)" >> $out  
       
    38   tsts0=$(( 0 ))
       
    39 else
       
    40   echo -e "  --> success" >> $out
       
    41   tsts0=$(( 0 )) 
       
    42 fi
       
    43 
       
    44 
       
    45 # compilation test
       
    46 if  [ $tsts0 -eq 0 ]
       
    47 then    
       
    48   echo -e "bf.scala runs?" >> $out
       
    49 
       
    50   if (scala_compile bf.scala)
       
    51   then
       
    52     echo -e "  --> success" >> $out
       
    53     tsts1=$(( 0 ))
       
    54   else
       
    55     echo -e "  --> SCALA DID NOT RUN BF.SCALA\n" >> $out
       
    56     tsts1=$(( 1 )) 
       
    57   fi
       
    58 else
       
    59   tsts1=$(( 1 ))     
       
    60 fi
       
    61 
       
    62 
       
    63 ### bf tests
       
    64 
       
    65 if [ $tsts1 -eq 0 ]
       
    66 then
       
    67   echo -e " load_bff(\"benchmark.bf\").length == 188" >> $out
       
    68   echo -e " load_bff(\"foobar.bf\") == \"\"" >> $out  
       
    69   
       
    70   if (scala_assert "bf.scala" "bf_test1.scala")
       
    71   then
       
    72     echo -e "  --> success" >> $out
       
    73   else
       
    74     echo -e "  --> \n ONE TEST FAILED\n" >> $out
       
    75   fi
       
    76 fi
       
    77 
       
    78 if [ $tsts1 -eq 0 ]
       
    79 then
       
    80   echo -e " sread(Map(), 2) == 0" >> $out
       
    81   echo -e " sread(Map(2 -> 1), 2) == 1" >> $out  
       
    82   echo -e " write(Map(), 1, 2) == Map(1 -> 2)" >> $out
       
    83   echo -e " write(Map(1 -> 0), 1, 2) == Map(1 -> 2)" >> $out
       
    84   
       
    85   if (scala_assert "bf.scala" "bf_test2.scala")
       
    86   then
       
    87     echo -e "  --> success" >> $out
       
    88   else
       
    89     echo -e "  --> \n ONE TEST FAILED\n" >> $out
       
    90   fi
       
    91 fi
       
    92 
       
    93 
       
    94 
       
    95 if [ $tsts1 -eq 0 ]
       
    96 then
       
    97     echo -e " jumpRight(\"[xxxxxx]xxx\", 1, 0) == 8" >> $out
       
    98     echo -e " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" >> $out
       
    99     echo -e " jumpRight(\"[xx[x]x]xxx\", 1, 0) == 8" >> $out
       
   100     echo -e " jumpRight(\"[xx[xxx]xxx\", 1, 0) == 11" >> $out
       
   101     echo -e " jumpRight(\"[x[][]x]xxx\", 1, 0) == 8" >> $out
       
   102     echo -e " jumpLeft(\"[xxxxxx]xxx\", 6, 0) == 1" >> $out
       
   103     echo -e " jumpLeft(\"[xxxxxx]xxx\", 7, 0) == -1" >> $out
       
   104     echo -e " jumpLeft(\"[x[][]x]xxx\", 6, 0) == 1" >> $out
       
   105   
       
   106   if (scala_assert "bf.scala" "bf_test3.scala")
       
   107   then
       
   108     echo -e "  --> success" >> $out
       
   109   else
       
   110     echo -e "  --> \n ONE TEST FAILED\n" >> $out   
       
   111   fi
       
   112 fi
       
   113 
       
   114 
       
   115 
       
   116 if [ $tsts1 -eq 0 ]
       
   117 then
       
   118   echo -e " run(\"[-]\", Map(0 -> 100)) == Map(0 -> 0)" >> $out
       
   119   echo -e " run(\"[->+<]\", Map(0 -> 10)) == Map(0 -> 0, 1 -> 10)" >> $out
       
   120   echo -e " run(\"[>>+>>+<<<<-]\", Map(0 -> 42)) == Map(0 -> 0, 2 -> 42, 4 -> 42)" >> $out
       
   121   echo -e " run(\"++++++++++#>+***#\") == Map(0 -> 10, 1 -> 1000))" >> $out
       
   122   echo -e " run(\"+++>+@+@+@+@+@\") == Map(0 -> 3, 1 -> 7, 4 -> 3, 5 -> 3, 6 -> 3, 7 -> 3)" >> $out
       
   123   
       
   124   echo -e " run(\"\"\"+++++[->++++++++++<]>--<+++[->>++++++++++" >> $out
       
   125   echo -e "        <<]>>++<<----------[+>.>.<+<]\"\"\") == Map(0 -> 0, 1 -> 58, 2 -> 32)" >> $out
       
   126 
       
   127   if (scala_assert "bf.scala" "bf_test4.scala")
       
   128   then
       
   129     echo -e "  --> success" >> $out
       
   130   else
       
   131     echo -e "  --> \n ONE TEST FAILED\n" >> $out 
       
   132   fi
       
   133 fi
       
   134 
       
   135 
       
   136 
       
   137