summaryrefslogtreecommitdiff
path: root/calc/calc_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'calc/calc_test.go')
-rw-r--r--calc/calc_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/calc/calc_test.go b/calc/calc_test.go
new file mode 100644
index 0000000..13b2f5b
--- /dev/null
+++ b/calc/calc_test.go
@@ -0,0 +1,54 @@
+package calc
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestNumbers(t *testing.T) {
+ result, err := Calc(`1`)
+ require.NoError(t, err)
+ require.EqualValues(t, 1, result)
+}
+
+func TestAddition(t *testing.T) {
+ result, err := Calc(`1+1`)
+ require.NoError(t, err)
+ require.EqualValues(t, 2, result)
+}
+
+func TestSubtraction(t *testing.T) {
+ result, err := Calc(`1-1`)
+ require.NoError(t, err)
+ require.EqualValues(t, 0, result)
+}
+
+func TestDivision(t *testing.T) {
+ result, err := Calc(`1/2`)
+ require.NoError(t, err)
+ require.EqualValues(t, .5, result)
+}
+
+func TestMultiplication(t *testing.T) {
+ result, err := Calc(`1*2`)
+ require.NoError(t, err)
+ require.EqualValues(t, 2, result)
+}
+
+func TestOrderOfOperations(t *testing.T) {
+ result, err := Calc(`1+10*2`)
+ require.NoError(t, err)
+ require.EqualValues(t, 21, result)
+}
+func TestParenthesis(t *testing.T) {
+ result, err := Calc(`(1+10)*2`)
+ require.NoError(t, err)
+ require.EqualValues(t, 22, result)
+}
+
+func TestRecursive(t *testing.T) {
+ result, err := Calc(`(1+(2*(3-(4/(5)))))`)
+ require.NoError(t, err)
+ require.EqualValues(t, 5.4, result)
+}