summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spew/common_test.go9
-rw-r--r--spew/spew_test.go16
2 files changed, 25 insertions, 0 deletions
diff --git a/spew/common_test.go b/spew/common_test.go
index f0119e6..4b786e6 100644
--- a/spew/common_test.go
+++ b/spew/common_test.go
@@ -20,6 +20,15 @@ import (
"fmt"
)
+// custom type to test Stinger interface on non-pointer receiver.
+type stringer string
+
+// String implements the Stringer interface for testing invocation of custom
+// stringers on types with non-pointer receivers.
+func (s stringer) String() string {
+ return "stringer " + string(s)
+}
+
// custom type to test Stinger interface on pointer receiver.
type pstringer string
diff --git a/spew/spew_test.go b/spew/spew_test.go
index e6677dc..a8cf33e 100644
--- a/spew/spew_test.go
+++ b/spew/spew_test.go
@@ -25,7 +25,15 @@ import (
"testing"
)
+// Config states with various settings.
var scsDefault = spew.NewDefaultConfig()
+var scsNoMethods = &spew.ConfigState{Indent: " ", DisableMethods: true}
+var scsNoPmethods = &spew.ConfigState{Indent: " ", DisablePointerMethods: true}
+
+// Variables for tests on types which implement Stringer interface with and
+// without a pointer receiver.
+var ts = stringer("test")
+var tps = pstringer("test")
// spewFunc is used to identify which public function of the spew package or
// ConfigState a test applies to.
@@ -101,6 +109,14 @@ var spewTests = []spewTest{
{scsDefault, fFprintln, "", float64(6.28), "6.28\n"},
{scsDefault, fPrint, "", true, "true"},
{scsDefault, fPrintln, "", false, "false\n"},
+ {scsNoMethods, fCSFprint, "", ts, "test"},
+ {scsNoMethods, fCSFprint, "", &ts, "<*>test"},
+ {scsNoMethods, fCSFprint, "", tps, "test"},
+ {scsNoMethods, fCSFprint, "", &tps, "<*>test"},
+ {scsNoPmethods, fCSFprint, "", ts, "stringer test"},
+ {scsNoPmethods, fCSFprint, "", &ts, "<*>stringer test"},
+ {scsNoPmethods, fCSFprint, "", tps, "test"},
+ {scsNoPmethods, fCSFprint, "", &tps, "<*>stringer test"},
}
// redirStdout is a helper function to return the standard output from f as a