|
|
- package math
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- )
-
- func TestParseFraction(t *testing.T) {
-
- testCases := []struct {
- f string
- exp Fraction
- err bool
- }{
- {
- f: "2/3",
- exp: Fraction{2, 3},
- err: false,
- },
- {
- f: "15/5",
- exp: Fraction{15, 5},
- err: false,
- },
- // test divide by zero error
- {
- f: "2/0",
- exp: Fraction{},
- err: true,
- },
- // test negative
- {
- f: "-1/2",
- exp: Fraction{},
- err: true,
- },
- {
- f: "1/-2",
- exp: Fraction{},
- err: true,
- },
- // test overflow
- {
- f: "9223372036854775808/2",
- exp: Fraction{},
- err: true,
- },
- {
- f: "2/9223372036854775808",
- exp: Fraction{},
- err: true,
- },
- {
- f: "2/3/4",
- exp: Fraction{},
- err: true,
- },
- {
- f: "123",
- exp: Fraction{},
- err: true,
- },
- {
- f: "1a2/4",
- exp: Fraction{},
- err: true,
- },
- {
- f: "1/3bc4",
- exp: Fraction{},
- err: true,
- },
- }
-
- for idx, tc := range testCases {
- output, err := ParseFraction(tc.f)
- if tc.err {
- assert.Error(t, err, idx)
- } else {
- assert.NoError(t, err, idx)
- }
- assert.Equal(t, tc.exp, output, idx)
- }
-
- }
|