diff --git a/reflect.go b/reflect.go index be202dc..1806973 100644 --- a/reflect.go +++ b/reflect.go @@ -59,15 +59,15 @@ func cardinalityOf(t reflect.Type) (cardinality, error) { switch t.Kind() { case reflect.Slice: 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 case reflect.Map: 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()) { - 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 default: diff --git a/reflect_test.go b/reflect_test.go index d7a5492..8d65fd9 100644 --- a/reflect_test.go +++ b/reflect_test.go @@ -26,6 +26,7 @@ func TestCardinalityOf(t *testing.T) { var unsupported1 struct{} var unsupported2 []struct{} var unsupported3 map[string]struct{} + var unsupported4 map[struct{}]string assertCardinality(t, reflect.TypeOf(b), zero) 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(unsupported3), unsupported) assertCardinality(t, reflect.TypeOf(&unsupported3), unsupported) + assertCardinality(t, reflect.TypeOf(unsupported4), unsupported) + assertCardinality(t, reflect.TypeOf(&unsupported4), unsupported) } type implementsTextUnmarshaler struct{} @@ -78,3 +81,11 @@ func TestIsExported(t *testing.T) { assert.False(t, isExported("")) 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()) +}