Compare commits

...

2 Commits

Author SHA1 Message Date
Adrien Marquès 9189babe20
test primitive types : bool, float64
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2020-03-02 22:49:17 +01:00
Adrien Marquès dfa6cba137
fix parsing primitive types instead of erroring unknown type 2020-03-02 22:45:58 +01:00
2 changed files with 63 additions and 1 deletions

View File

@ -123,6 +123,6 @@ func parseParameter(data interface{}) (interface{}, error) {
} }
/* (3) NIL if unknown type */ /* (3) NIL if unknown type */
return dvalue, ErrUnknownType return dvalue.Interface(), nil
} }

View File

@ -32,6 +32,68 @@ func TestSimpleString(t *testing.T) {
} }
} }
func TestSimpleFloat(t *testing.T) {
tcases := []float64{12.3456789, -12.3456789, 0.0000001, -0.0000001}
for i, tcase := range tcases {
t.Run("case "+string(i), func(t *testing.T) {
p := Parameter{Parsed: false, File: false, Value: tcase}
if err := p.Parse(); err != nil {
t.Errorf("unexpected error: <%s>", err)
t.FailNow()
}
if !p.Parsed {
t.Errorf("expected parameter to be parsed")
t.FailNow()
}
cast, canCast := p.Value.(float64)
if !canCast {
t.Errorf("expected parameter to be a float64")
t.FailNow()
}
if math.Abs(cast-tcase) > 0.00000001 {
t.Errorf("expected parameter to equal '%f', got '%f'", tcase, cast)
t.FailNow()
}
})
}
}
func TestSimpleBool(t *testing.T) {
tcases := []bool{true, false}
for i, tcase := range tcases {
t.Run("case "+string(i), func(t *testing.T) {
p := Parameter{Parsed: false, File: false, Value: tcase}
if err := p.Parse(); err != nil {
t.Errorf("unexpected error: <%s>", err)
t.FailNow()
}
if !p.Parsed {
t.Errorf("expected parameter to be parsed")
t.FailNow()
}
cast, canCast := p.Value.(bool)
if !canCast {
t.Errorf("expected parameter to be a bool")
t.FailNow()
}
if cast != tcase {
t.Errorf("expected parameter to equal '%t', got '%t'", tcase, cast)
t.FailNow()
}
})
}
}
func TestJsonStringSlice(t *testing.T) { func TestJsonStringSlice(t *testing.T) {
p := Parameter{Parsed: false, File: false, Value: `["str1", "str2"]`} p := Parameter{Parsed: false, File: false, Value: `["str1", "str2"]`}