|
@@ -0,0 +1,62 @@
|
|
|
+#!/usr/bin/bats
|
|
|
+
|
|
|
+@test "Print one number" {
|
|
|
+ result="$(echo '42=' | ./eval.out)"
|
|
|
+ [ "$result" = "42" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Basic addition" {
|
|
|
+ result="$(echo '1+2=' | ./eval.out)"
|
|
|
+ [ "$result" = "3" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Basic substraction" {
|
|
|
+ result="$(echo '1-2=' | ./eval.out)"
|
|
|
+ [ "$result" = "-1" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Multiplication priority over addition" {
|
|
|
+ result="$(echo '1+2*3=' | ./eval.out)"
|
|
|
+ [ "$result" = "7" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Parenthesis priority" {
|
|
|
+ result="$(echo '(1+2)*3=' | ./eval.out)"
|
|
|
+ [ "$result" = "9" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Three operands with addition" {
|
|
|
+ result="$(echo '1+2+3=' | ./eval.out)"
|
|
|
+ [ "$result" = "6" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Two parenthesis blocks" {
|
|
|
+ result="$(echo '(1 - 1) + (2 - 2) =' | ./eval.out)"
|
|
|
+ [ "$result" = "0" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Addition, substraction and multiplication" {
|
|
|
+ result="$(echo '1 + 7 - 4 * 2 =' | ./eval.out)"
|
|
|
+ [ "$result" = "0" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Negative result" {
|
|
|
+ result="$(echo '6 - 14=' | ./eval.out)"
|
|
|
+ [ "$result" = "-8" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Minus unary operand" {
|
|
|
+ result="$(echo '-4=' | ./eval.out)"
|
|
|
+ [ "$result" = "-4" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Basic division" {
|
|
|
+ result="$(echo '42 / 7 =' | ./eval.out)"
|
|
|
+ [ "$result" = "6" ]
|
|
|
+}
|
|
|
+
|
|
|
+@test "Basic truncated division" {
|
|
|
+ result="$(echo '16 / 3 =' | ./eval.out)"
|
|
|
+ [ "$result" = "5" ]
|
|
|
+}
|
|
|
+
|