marking/test
author Christian Urban <urbanc@in.tum.de>
Wed, 29 Nov 2017 21:22:29 +0000
changeset 160 863feeb5c760
parent 93 21f41e08457d
permissions -rwxr-xr-x
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
93
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
#!/bin/bash
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
set -e
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     4
out=${1:-output-test}
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
function scala_vars {
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
   (egrep '\bvar\b|\breturn\b|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     9
}
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    10
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    11
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
# compilation tests
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    13
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    14
function scala_compile {
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    15
  (scala "$1" 2> /dev/null 1> /dev/null) 
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    16
}
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    17
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    18
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    19
# functional tests
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    20
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    21
function scala_assert {
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    22
  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    23
}
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    24
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    25
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    26
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    27
# var, return, ListBuffer test
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    28
#
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    29
#echo "re.scala does not contain vars, returns etc?" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    30
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    31
if (scala_vars re.scala)
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    32
then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    33
  #echo "  --> fail" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    34
  tsts0=$(( 1 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    35
else
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    36
  #echo "  --> yes" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    37
  tsts0=$(( 0 )) 
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    38
fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    39
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    40
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    41
# compilation test
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    42
if  [ $tsts0 -eq 0 ]
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    43
then    
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    44
  #echo "re.scala runs?" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    45
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    46
  if (scala_compile re.scala.bak)
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    47
  then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    48
    #echo "  --> yes" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    49
    tsts1=$(( 0 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    50
  else
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    51
    #echo "  --> scala re.scala did not run successfully" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    52
    tsts1=$(( 1 )) 
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    53
  fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    54
else
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    55
  tsts1=$(( 1 ))     
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    56
fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    57
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    58
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    59
if [ $tsts1 -eq 0 ]
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    60
then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    61
  if (scala_assert "re.scala.bak" "../../../marking/re1d_test.scala")
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    62
  then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    63
    echo "  --> success" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    64
    t1=$(( 1 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    65
  else
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    66
    echo "  --> test failed" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    67
    t1=$(( 0 ))   
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    68
  fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    69
else  
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    70
  t1=$(( 0 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    71
fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    72
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    73
if [ $tsts1 -eq 0 ]
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    74
then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    75
  if (scala_assert "re.scala.bak" "../../../marking/re1d_bug_test.scala")
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    76
  then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    77
    echo "  bug --> success" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    78
    t2=$(( 1 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    79
  else
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    80
    echo "  bug --> test failed" | tee -a $out
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    81
    t2=$(( 0 ))  
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    82
  fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    83
else  
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    84
  t2=$(( 0 ))
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    85
fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    86
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    87
if [ $t1 -ne $t2 ]
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    88
then
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    89
  echo "disagree"
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    90
  pwd
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    91
fi
21f41e08457d updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    92