diff options
Diffstat (limited to 'calc/calc_test.go')
-rw-r--r-- | calc/calc_test.go | 54 |
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) +} |