summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2019-05-02 09:32:23 -0700
committerAlex Flint <[email protected]>2019-05-02 09:32:23 -0700
commita15b6ad67063562c974b346ca71dfceea045b0e4 (patch)
treec14efda317be3609380c0c3139b53801233b89bd
parent87be2d97907952e87203bd3a4b09cfbe49ce028d (diff)
add test for canParse with TextUnmarshaler
-rw-r--r--reflect.go2
-rw-r--r--reflect_test.go15
2 files changed, 15 insertions, 2 deletions
diff --git a/reflect.go b/reflect.go
index 32efe04..e113583 100644
--- a/reflect.go
+++ b/reflect.go
@@ -9,8 +9,6 @@ import (
var textUnmarshalerType = reflect.TypeOf([]encoding.TextUnmarshaler{}).Elem()
-// This file contains miscellaneous reflection utilities
-
// canParse returns true if the type can be parsed from a string
func canParse(t reflect.Type) (parseable, boolean, multiple bool) {
parseable = scalar.CanParse(t)
diff --git a/reflect_test.go b/reflect_test.go
index 0f285f7..47e68b5 100644
--- a/reflect_test.go
+++ b/reflect_test.go
@@ -38,3 +38,18 @@ func TestCanParse(t *testing.T) {
assertCanParse(t, reflect.TypeOf(is), true, false, true)
assertCanParse(t, reflect.TypeOf(&is), true, false, true)
}
+
+type implementsTextUnmarshaler struct{}
+
+func (*implementsTextUnmarshaler) UnmarshalText(text []byte) error {
+ return nil
+}
+
+func TestCanParseTextUnmarshaler(t *testing.T) {
+ var u implementsTextUnmarshaler
+ var su []implementsTextUnmarshaler
+ assertCanParse(t, reflect.TypeOf(u), true, false, false)
+ assertCanParse(t, reflect.TypeOf(&u), true, false, false)
+ assertCanParse(t, reflect.TypeOf(su), true, false, true)
+ assertCanParse(t, reflect.TypeOf(&su), true, false, true)
+}