فهرست منبع

Add tests for disable method options.

This commit adds tests for the DisableMethods and DisablePointerMethods
options.  All combinations of method options and Stringer interface
invocation for both pointer receivers and non-pointer receivers are
tested.
Dave Collins 13 سال پیش
والد
کامیت
44d9c97c1a
2فایلهای تغییر یافته به همراه25 افزوده شده و 0 حذف شده
  1. 9 0
      spew/common_test.go
  2. 16 0
      spew/spew_test.go

+ 9 - 0
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
 

+ 16 - 0
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