testing5/bf_test.sh
author Christian Urban <urbanc@in.tum.de>
Thu, 06 Dec 2018 18:56:26 +0000
changeset 235 c989f50da5de
child 236 e461b5325b5e
permissions -rwxr-xr-x
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
235
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
#!/bin/bash
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
set -e
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
out=${1:-output}
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
echo "" > $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
echo "Below is the feedback for your submission of CW 8, Part 2." >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
echo "" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    11
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    12
# compilation tests
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    14
function scala_compile {
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
  (ulimit -t 30 -m 1024000 ; scala "$1" 2>> $out 1>> $out) 
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
}
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
# functional tests
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    19
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
function scala_assert {
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    21
  (ulimit -t 30 -m 1024000 ; scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
}
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24
# purity test
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    25
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    26
function scala_vars {
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    27
   (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null)
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    28
}
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    29
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    30
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    31
# var, return, ListBuffer test
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    32
#
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    33
echo "bf.scala does not contain vars, returns etc?" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    34
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    35
if (scala_vars bf.scala)
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    36
then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    37
  echo "  --> fail" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    38
  tsts0=$(( 1 ))
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    39
else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    40
  echo "  --> success" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    41
  tsts0=$(( 0 )) 
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    42
fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    43
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    44
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    45
# compilation test
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    46
if  [ $tsts0 -eq 0 ]
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    47
then    
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    48
  echo "bf.scala runs?" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    49
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    50
  if (scala_compile bf.scala)
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    51
  then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    52
    echo "  --> success" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    53
    tsts1=$(( 0 ))
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    54
  else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    55
    echo "  --> scala bf.scala did not run successfully" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    56
    tsts1=$(( 1 )) 
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    57
  fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    58
else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    59
  tsts1=$(( 1 ))     
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    60
fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    61
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    62
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    63
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    64
if [ $tsts1 -eq 0 ]
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    65
then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    66
  echo " sread(Map(), 2) == 0" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    67
  echo " sread(Map(2 -> 1), 2) == 1" >> $out  
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    68
  echo " write(Map(), 1, 2) == Map(1 -> 2)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    69
  echo " write(Map(1 -> 0), 1, 2) == Map(1 -> 2)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    70
  
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    71
  if (scala_assert "bf.scala" "bf1a_test.scala")
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    72
  then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    73
    echo "  --> success" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    74
  else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    75
    echo "  --> test failed" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    76
  fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    77
fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    78
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    79
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    80
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    81
if [ $tsts1 -eq 0 ]
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    82
then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    83
    echo " jumpRight(\"[******]***\", 1, 0) == 8" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    84
    echo " jumpRight(\"[**[*]*]***\", 1, 0) == 8" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    85
    echo " jumpRight(\"[**[*]*]***\", 1, 0) == 8" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    86
    echo " jumpRight(\"[**[***]***\", 1, 0) == 11" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    87
    echo " jumpRight(\"[*[][]*]***\", 1, 0) == 8" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    88
    echo " jumpLeft(\"[******]***\", 6, 0) == 1" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    89
    echo " jumpLeft(\"[******]***\", 7, 0) == -1" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    90
    echo " jumpLeft(\"[*[][]*]***\", 6, 0) == 1" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    91
  
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    92
  if (scala_assert "bf.scala" "bf1b_test.scala")
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    93
  then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    94
    echo "  --> success" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    95
  else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    96
    echo "  --> test failed" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    97
  fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    98
fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    99
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   100
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   101
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   102
if [ $tsts1 -eq 0 ]
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   103
then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   104
  echo " start(\"[-]\", Map(0 -> 100)) == Map(0 -> 0)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   105
  echo " start(\"[->+<]\", Map(0 -> 10)) == Map(0 -> 0, 1 -> 10)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   106
  echo " start(\"[>>+>>+<<<<-]\", Map(0 -> 42)) == Map(0 -> 0, 2 -> 42, 4 -> 42)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   107
  echo " start({{hello world prg 1}}, Map()) == " >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   108
  echo "        Map(0 -> 0, 5 -> 33, 1 -> 0, 6 -> 10, 2 -> 72, 3 -> 100, 4 -> 87)" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   109
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   110
  if (scala_assert "bf.scala" "bf1c_test.scala")
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   111
  then
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   112
    echo "  --> success" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   113
  else
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   114
    echo "  --> test failed" >> $out
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   115
  fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   116
fi
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   117
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   118
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   119
c989f50da5de updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
   120