testing4/re_test.sh
changeset 221 9e7897f25e13
parent 215 438459a8e48b
child 228 33c2655be47d
equal deleted inserted replaced
220:3020f8c76baa 221:9e7897f25e13
     1 #!/bin/bash
     1 #!/bin/bash
     2 set -e
     2 set -euo pipefail
       
     3 
     3 
     4 
     4 out=${1:-output}
     5 out=${1:-output}
     5 
     6 
     6 echo "" > $out
     7 echo -e "" > $out
     7 
     8 
     8 echo "Below is the feedback for your submission of CW 8, Part 1." >> $out
     9 echo -e "Below is the feedback for your submission of CW 9, Part 1." >> $out
     9 echo "" >> $out
    10 echo -e "" >> $out
    10 
    11 
    11 
    12 
    12 # compilation tests
    13 # compilation tests
    13 
    14 
    14 function scala_compile {
    15 function scala_compile {
    15   (ulimit -t 30 -m 1024000 ; scala "$1" 2>> $out 1>> $out) 
    16   (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out)   
    16 }
    17 }
    17 
    18 
    18 # functional tests
    19 # functional tests
    19 
    20 
    20 function scala_assert {
    21 function scala_assert {
    21   (ulimit -t 30 -m 1024000 ; scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
    22   (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
       
    23     
    22 }
    24 }
    23 
    25 
    24 # purity test
    26 # purity test
    25 
    27 
    26 function scala_vars {
    28 function scala_vars {
    28 }
    30 }
    29 
    31 
    30 
    32 
    31 # var, return, ListBuffer test
    33 # var, return, ListBuffer test
    32 #
    34 #
    33 echo "re.scala does not contain vars, returns etc?" >> $out
    35 echo -e "re.scala does not contain vars, returns etc?" >> $out
    34 
    36 
    35 if (scala_vars re.scala)
    37 if (scala_vars re.scala)
    36 then
    38 then
    37   echo "  --> fail" >> $out
    39   echo -e "   --> fail (make triple-sure your program conforms to the required format)" >> $out 
    38   tsts0=$(( 1 ))
    40   tsts0=$(( 0 ))
    39 else
    41 else
    40   echo "  --> yes" >> $out
    42   echo -e "  --> success" >> $out
    41   tsts0=$(( 0 )) 
    43   tsts0=$(( 0 )) 
    42 fi
    44 fi
    43 
    45 
    44 
    46 
    45 # compilation test
    47 # compilation test
       
    48 
    46 if  [ $tsts0 -eq 0 ]
    49 if  [ $tsts0 -eq 0 ]
    47 then    
    50 then    
    48   echo "re.scala runs?" >> $out
    51   echo -e "re.scala runs?" >> $out
    49 
    52 
    50   if (scala_compile re.scala)
    53   if (scala_compile re.scala)
    51   then
    54   then
    52     echo "  --> yes" >> $out
    55     echo -e "  --> yes" >> $out
    53     tsts1=$(( 0 ))
    56     tsts1=$(( 0 ))
    54   else
    57   else
    55     echo "  --> scala re.scala did not run successfully" >> $out
    58     echo -e "  --> SCALA DID NOT RUN RE.SCALA\n" >> $out
    56     tsts1=$(( 1 )) 
    59     tsts1=$(( 1 )) 
    57   fi
    60   fi
    58 else
    61 else
    59   tsts1=$(( 1 ))     
    62   tsts1=$(( 1 ))     
    60 fi
    63 fi
    61 
    64 
    62 
    65 ### re tests
    63 
    66 
    64 if [ $tsts1 -eq 0 ]
    67 if [ $tsts1 -eq 0 ]
    65 then
    68 then
    66   echo " nullable(ZERO) == false" >> $out
    69   echo -e " nullable(ZERO) == false" >> $out
    67   echo " nullable(ONE) == true" >> $out
    70   echo -e " nullable(ONE) == true" >> $out
    68   echo " nullable(CHAR('a')) == false" >> $out
    71   echo -e " nullable(CHAR('a')) == false" >> $out
    69   echo " nullable(ZERO | ONE) == true" >> $out
    72   echo -e " nullable(ZERO | ONE) == true" >> $out
    70   echo " nullable(ZERO | CHAR('a')) == false" >> $out
    73   echo -e " nullable(ZERO | CHAR('a')) == false" >> $out
    71   echo " nullable(ONE ~  ONE) == true" >> $out
    74   echo -e " nullable(ONE ~  ONE) == true" >> $out
    72   echo " nullable(ONE ~ CHAR('a')) == false" >> $out
    75   echo -e " nullable(ONE ~ CHAR('a')) == false" >> $out
    73   echo " nullable(STAR(ZERO)) == true" >> $out
    76   echo -e " nullable(STAR(ZERO)) == true" >> $out
    74   
    77   
    75   if (scala_assert "re.scala" "re1a_test.scala")
    78   if (scala_assert "re.scala" "re_test1.scala")
    76   then
    79   then
    77     echo "  --> success" >> $out
    80     echo -e "  --> success" >> $out
    78   else
    81   else
    79     echo "  --> test failed" >> $out
    82     echo -e "  --> \n ONE TEST FAILED\n" >> $out
    80   fi
    83   fi
    81 fi
    84 fi
    82 
    85 
    83 
    86 
    84 
    87 
    85 if [ $tsts1 -eq 0 ]
    88 if [ $tsts1 -eq 0 ]
    86 then
    89 then
    87   echo " der('a', ZERO | ONE) == (ZERO | ZERO)" >> $out
    90   echo -e " der('a', ZERO | ONE) == (ZERO | ZERO)" >> $out
    88   echo " der('a', (CHAR('a') | ONE) ~ CHAR('a')) == ALT((ONE | ZERO) ~ CHAR('a'), ONE)" >> $out
    91   echo -e " der('a', (CHAR('a') | ONE) ~ CHAR('a')) ==" >> $out
    89   echo " der('a', STAR(CHAR('a'))) == (ONE ~ STAR(CHAR('a')))" >> $out
    92   echo -e "                 ALT((ONE | ZERO) ~ CHAR('a'), ONE)" >> $out
    90   echo " der('b', STAR(CHAR('a'))) == (ZERO ~ STAR(CHAR('a')))" >> $out
    93   echo -e " der('a', STAR(CHAR('a'))) == (ONE ~ STAR(CHAR('a')))" >> $out
       
    94   echo -e " der('b', STAR(CHAR('a'))) == (ZERO ~ STAR(CHAR('a')))" >> $out
    91   
    95   
    92   if (scala_assert "re.scala" "re1b_test.scala")
    96   if (scala_assert "re.scala" "re_test2.scala")
    93   then
    97   then
    94     echo "  --> success" >> $out
    98     echo -e "  --> success" >> $out
    95   else
    99   else
    96     echo "  --> test failed" >> $out
   100     echo -e "  --> \n ONE TEST FAILED\n" >> $out
    97   fi
   101   fi
    98 fi
   102 fi
    99 
   103 
   100 
   104 
   101 
   105 
   102 if [ $tsts1 -eq 0 ]
   106 if [ $tsts1 -eq 0 ]
   103 then
   107 then
   104   echo " simp(ZERO | ONE) == ONE" >> $out
   108   echo -e " simp(ZERO | ONE) == ONE" >> $out
   105   echo " simp(STAR(ZERO | ONE)) == STAR(ZERO | ONE)" >> $out
   109   echo -e " simp(STAR(ZERO | ONE)) == STAR(ZERO | ONE)" >> $out
   106   echo " simp(ONE ~ (ONE ~ (ONE ~ CHAR('a')))) == CHAR('a')" >> $out
   110   echo -e " simp(ONE ~ (ONE ~ (ONE ~ CHAR('a')))) == CHAR('a')" >> $out
   107   echo " simp(ONE ~ (ONE ~ (ONE ~ ZERO))) == ZERO" >> $out
   111   echo -e " simp(ONE ~ (ONE ~ (ONE ~ ZERO))) == ZERO" >> $out
   108   echo " simp(ALT(ONE ~ (ONE ~ (ONE ~ ZERO)), CHAR('a'))) == CHAR('a')" >> $out
   112   echo -e " simp(ALT(ONE ~ (ONE ~ (ONE ~ ZERO)), CHAR('a'))) == CHAR('a')" >> $out
   109   echo " simp(CHAR('a') | CHAR('a')) == CHAR('a')" >> $out
   113   echo -e " simp(CHAR('a') | CHAR('a')) == CHAR('a')" >> $out
   110   echo " simp(ONE | CHAR('a')) == (ONE | CHAR('a'))" >> $out
   114   echo -e " simp(ONE | CHAR('a')) == (ONE | CHAR('a'))" >> $out
   111   echo " simp(ALT((CHAR('a') | ZERO) ~ ONE," >> $out
   115   echo -e " simp(ALT((CHAR('a') | ZERO) ~ ONE," >> $out
   112   echo "          ((ONE | CHAR('b')) | CHAR('c')) ~ (CHAR('d') ~ ZERO))) == CHAR('a')" >> $out
   116   echo -e "          ((ONE | CHAR('b')) | CHAR('c')) ~ (CHAR('d') ~ ZERO))) == CHAR('a')" >> $out
   113   if (scala_assert "re.scala" "re1c_test.scala")
   117   if (scala_assert "re.scala" "re_test3.scala")
   114   then
   118   then
   115     echo "  --> success" >> $out
   119     echo -e "  --> success" >> $out
   116   else
   120   else
   117     echo "  --> test failed" >> $out
   121     echo -e "  --> \n ONE TEST FAILED\n" >> $out
   118   fi
   122   fi
   119 fi
   123 fi
   120 
   124 
   121 
   125 
   122 if [ $tsts1 -eq 0 ]
   126 if [ $tsts1 -eq 0 ]
   123 then
   127 then
   124   echo " val EVIL = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))" >> $out
   128   echo -e " val EVIL = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))" >> $out
   125   echo " ders(List.fill(5)('a'),EVIL) == SEQ(SEQ(STAR(CHAR('a')),STAR(STAR(CHAR('a')))),CHAR('b'))" >> $out
   129   echo -e " ders(\"aaaaa\".toList, EVIL) == SEQ(SEQ(STAR(CHAR('a')),STAR(STAR(CHAR('a')))),CHAR('b'))" >> $out
   126   echo " ders(List('b'),EVIL) == ONE" >> $out
   130   echo -e " ders(List('b'), EVIL) == ONE" >> $out
   127   echo " ders(List('b','b'),EVIL) == ZERO" >> $out
   131   echo -e " ders(\"bb\".toList, EVIL) == ZERO" >> $out
   128   echo " matcher(EVIL, \"a\" * 5 ++ \"b\") == true" >> $out
   132   echo -e " matcher(EVIL, \"a\" * 5 ++ \"b\") == true" >> $out
   129   echo " matcher(EVIL, \"b\") == true" >> $out
   133   echo -e " matcher(EVIL, \"b\") == true" >> $out
   130   echo " matcher(EVIL, \"bb\") == false" >> $out
   134   echo -e " matcher(EVIL, \"bb\") == false" >> $out
   131   echo " matcher(\"abc\", \"abc\") == true" >> $out
   135   echo -e " matcher(\"abc\", \"abc\") == true" >> $out
   132   echo " matcher((\"ab\" | \"a\") ~ (ONE | \"bc\"), \"abc\") == true" >> $out
   136   echo -e " matcher((\"ab\" | \"a\") ~ (ONE | \"bc\"), \"abc\") == true" >> $out
   133   echo " matcher(ONE, \"\") == true" >> $out
   137   echo -e " matcher(ONE, \"\") == true" >> $out
   134   echo " matcher(ZERO, \"\") == false" >> $out
   138   echo -e " matcher(ZERO, \"\") == false" >> $out
   135   echo " matcher(ONE | CHAR('a'), \"\") == true" >> $out
   139   echo -e " matcher(ONE | CHAR('a'), \"\") == true" >> $out
   136   echo " matcher(ONE | CHAR('a'), \"a\") == true" >> $out
   140   echo -e " matcher(ONE | CHAR('a'), \"a\") == true" >> $out
   137   
   141   
   138   if (scala_assert "re.scala" "re1d_test.scala")
   142   if (scala_assert "re.scala" "re_test4.scala")
   139   then
   143   then
   140     echo "  --> success" >> $out
   144     echo -e "  --> success" >> $out
   141   else
   145   else
   142     echo "  --> test failed" >> $out
   146     echo -e "  --> \n ONE TEST FAILED\n" >> $out  
   143   fi
   147   fi
   144 fi
   148 fi
   145 
   149 
   146 
   150 
   147 if [ $tsts1 -eq 0 ]
   151 if [ $tsts1 -eq 0 ]
   148 then
   152 then
   149   echo " val EVIL = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))" >> $out  
   153   echo -e " val EVIL = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))" >> $out  
   150   echo " size(der('a', der('a', EVIL))) == 28" >> $out
   154   echo -e " size(der('a', der('a', EVIL))) == 28" >> $out
   151   echo " size(der('a', der('a', der('a', EVIL)))) == 58" >> $out
   155   echo -e " size(der('a', der('a', der('a', EVIL)))) == 58" >> $out
   152   echo " size(ders(\"aaaaaa\".toList, EVIL)) == 8" >> $out
   156   echo -e " size(ders(\"aaaaaa\".toList, EVIL)) == 8" >> $out
   153   
   157   
   154   if (scala_assert "re.scala" "re1e_test.scala")
   158   if (scala_assert "re.scala" "re_test5.scala")
   155   then
   159   then
   156     echo "  --> success" >> $out
   160     echo -e "  --> success" >> $out
   157   else
   161   else
   158     echo "  --> test failed" >> $out
   162     echo -e "  --> \n ONE TEST FAILED\n" >> $out   
   159   fi
   163   fi
   160 fi
   164 fi
   161 
   165 
   162 
   166