Year 2 compilers coureswork

test.sh 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #/bin/bash
  2. uname=`uname`
  3. if [ "$uname" = "Darwin" ]; then
  4. date="gdate"
  5. readlink="greadlink"
  6. else
  7. date="date"
  8. readlink="readlink"
  9. fi
  10. start=$($date +%s.%N)
  11. absdir=$($readlink -f $(dirname $0))
  12. ret_only=`$absdir/../mycc < $absdir/return_only.c | tail -n 1`
  13. var_maths=`$absdir/../mycc < $absdir/var_maths.c | tail -n 1`
  14. func_call=`$absdir/../mycc < $absdir/func_call.c | tail -n 1`
  15. cond_loop=`$absdir/../mycc < $absdir/cond_loop.c | tail -n 1`
  16. func_args=`$absdir/../mycc < $absdir/func_args.c | tail -n 1`
  17. ret_ans='3'
  18. var_ans='11'
  19. func_ans='8'
  20. args_ans='14'
  21. cond_ans='17'
  22. overall='0'
  23. pass="\033[32mPASSED\033[0m"
  24. fail="\033[31mFAILED\033[0m"
  25. if [ "$ret_only" -eq $ret_ans ]; then
  26. echo "return_only ... $pass"
  27. else
  28. echo -n "return_only ... $fail"
  29. echo " expected $ret_ans but got $ret_only"
  30. overall='1'
  31. fi
  32. if [ "$var_maths" -eq $var_ans ]; then
  33. echo "var_maths ..... $pass"
  34. else
  35. echo "var_maths ..... $fail"
  36. echo " expected $var_ans but got $var_maths"
  37. overall='1'
  38. fi
  39. if [ "$func_call" -eq $func_ans ]; then
  40. echo "func_call ..... $pass"
  41. else
  42. echo -n "func_call ..... $fail"
  43. echo " expected $func_ans but got $func_call"
  44. overall='1'
  45. fi
  46. if [ "$cond_loop" -eq $cond_ans ]; then
  47. echo "cond_loop ..... $pass"
  48. else
  49. echo -n "cond_loop ..... $fail"
  50. echo " expected $cond_ans but got $cond_loop"
  51. overall='1'
  52. fi
  53. if [ "$func_args" -eq $args_ans ]; then
  54. echo "func_args ..... $pass"
  55. else
  56. echo -n "func_args ..... $fail"
  57. echo " expected $args_ans but got $func_args"
  58. overall='1'
  59. fi
  60. end=$($date +%s.%N)
  61. runtime=$(python -c "print(${end} - ${start})")
  62. echo "\nCompleted 5 tests in $runtime""s"
  63. exit $overall