more test coverage

This commit is contained in:
Alex Flint 2021-04-19 14:50:05 -07:00
parent 57f610284f
commit a80336128c
2 changed files with 14 additions and 3 deletions

View File

@ -59,15 +59,15 @@ func cardinalityOf(t reflect.Type) (cardinality, error) {
switch t.Kind() { switch t.Kind() {
case reflect.Slice: case reflect.Slice:
if !scalar.CanParse(t.Elem()) { if !scalar.CanParse(t.Elem()) {
return unsupported, fmt.Errorf("cannot parse into %v because we cannot parse into %v", t, t.Elem()) return unsupported, fmt.Errorf("cannot parse into %v because %v not supported", t, t.Elem())
} }
return multiple, nil return multiple, nil
case reflect.Map: case reflect.Map:
if !scalar.CanParse(t.Key()) { if !scalar.CanParse(t.Key()) {
return unsupported, fmt.Errorf("cannot parse into %v because we cannot parse into the key type %v", t, t.Elem()) return unsupported, fmt.Errorf("cannot parse into %v because key type %v not supported", t, t.Elem())
} }
if !scalar.CanParse(t.Elem()) { if !scalar.CanParse(t.Elem()) {
return unsupported, fmt.Errorf("cannot parse into %v because we cannot parse into the value type %v", t, t.Elem()) return unsupported, fmt.Errorf("cannot parse into %v because value type %v not supported", t, t.Elem())
} }
return multiple, nil return multiple, nil
default: default:

View File

@ -26,6 +26,7 @@ func TestCardinalityOf(t *testing.T) {
var unsupported1 struct{} var unsupported1 struct{}
var unsupported2 []struct{} var unsupported2 []struct{}
var unsupported3 map[string]struct{} var unsupported3 map[string]struct{}
var unsupported4 map[struct{}]string
assertCardinality(t, reflect.TypeOf(b), zero) assertCardinality(t, reflect.TypeOf(b), zero)
assertCardinality(t, reflect.TypeOf(i), one) assertCardinality(t, reflect.TypeOf(i), one)
@ -52,6 +53,8 @@ func TestCardinalityOf(t *testing.T) {
assertCardinality(t, reflect.TypeOf(&unsupported2), unsupported) assertCardinality(t, reflect.TypeOf(&unsupported2), unsupported)
assertCardinality(t, reflect.TypeOf(unsupported3), unsupported) assertCardinality(t, reflect.TypeOf(unsupported3), unsupported)
assertCardinality(t, reflect.TypeOf(&unsupported3), unsupported) assertCardinality(t, reflect.TypeOf(&unsupported3), unsupported)
assertCardinality(t, reflect.TypeOf(unsupported4), unsupported)
assertCardinality(t, reflect.TypeOf(&unsupported4), unsupported)
} }
type implementsTextUnmarshaler struct{} type implementsTextUnmarshaler struct{}
@ -78,3 +81,11 @@ func TestIsExported(t *testing.T) {
assert.False(t, isExported("")) assert.False(t, isExported(""))
assert.False(t, isExported(string([]byte{255}))) assert.False(t, isExported(string([]byte{255})))
} }
func TestCardinalityString(t *testing.T) {
assert.Equal(t, "zero", zero.String())
assert.Equal(t, "one", one.String())
assert.Equal(t, "multiple", multiple.String())
assert.Equal(t, "unsupported", unsupported.String())
assert.Equal(t, "unknown(42)", cardinality(42).String())
}