#!/bin/bash

for file in ../tests/not-well-formed/*.js
do
  result=`../tc -pretc $file 2>&1`
  exitcode=$?
  if [ $exitcode -ne 2 ]; then
      echo -e "$file: expected a well-formedness error; exit code was $exitcode\n"
      continue
  fi
  errors=`echo "$result" | grep -ci "not well-formed"`
  if [ $errors -ne 1 ]; then
    echo -e "$file: expected a well-formness error; got\n$result\n"
  fi
done

for file in ../tests/well-formed/*.js
do
  result=`../tc -pretc $file 2>&1`
  if [ $? -ne 0 ]; then
      echo -e "$file: aborted with exit code $?; output was:\n$result\n"
  fi
done


for file in ../tests/untypable/*.js
do
  result=`../tc -tc $file 2>&1`
  exitcode=$?
  if [ $exitcode -ne 2 ]; then
      echo -e "$file: expected a type-error error; exit code was $exitcode\n"
      continue
  fi
  errors=`echo "$result" | grep -ci "type error"`
  if [ $errors -ne 1 ]; then
    echo -e "$file: expected a type error error; got\n$result\n"
  fi
done

for file in ../tests/typable/*.js
do
  result=`../tc -tc $file 2>&1`
  if [ $? -ne 0 ]; then
      echo -e "$file: aborted with exit code $?; output was:\n$result\n"
  fi
done

for file in ../tests/browser/*.js
do
  result=`../tcb -tc $file 2>&1`
  if [ $? -ne 0 ]; then
      echo -e "$file: aborted with exit code $?; output was:\n$result\n"
  fi
done


for file in ../tests/parsing/*.js
do
  result=`../tc -pretty $file 2>&1`
  if [ $? -ne 0 ]; then
      echo -e "$file: aborted with exit code $?; output was:\n$result\n"
  fi
done

cd ../tests/contracts
for file in *.js
do
  ./runtest.sh $file
done

cd ../gadgets
for file in *.js
do
  ./runtest.sh $file
done
