.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / github.com / google / go-cmp@v0.5.4 / cmp / internal / value / name_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/github.com/google/go-cmp@v0.5.4/cmp/internal/value/name_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/github.com/google/go-cmp@v0.5.4/cmp/internal/value/name_test.go
new file mode 100644 (file)
index 0000000..3eec91c
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright 2020, The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package value
+
+import (
+       "reflect"
+       "strings"
+       "testing"
+)
+
+type Named struct{}
+
+var pkgPath = reflect.TypeOf(Named{}).PkgPath()
+
+func TestTypeString(t *testing.T) {
+       tests := []struct {
+               in   interface{}
+               want string
+       }{{
+               in:   bool(false),
+               want: "bool",
+       }, {
+               in:   int(0),
+               want: "int",
+       }, {
+               in:   float64(0),
+               want: "float64",
+       }, {
+               in:   string(""),
+               want: "string",
+       }, {
+               in:   Named{},
+               want: "$PackagePath.Named",
+       }, {
+               in:   (chan Named)(nil),
+               want: "chan $PackagePath.Named",
+       }, {
+               in:   (<-chan Named)(nil),
+               want: "<-chan $PackagePath.Named",
+       }, {
+               in:   (chan<- Named)(nil),
+               want: "chan<- $PackagePath.Named",
+       }, {
+               in:   (func())(nil),
+               want: "func()",
+       }, {
+               in:   (func(Named))(nil),
+               want: "func($PackagePath.Named)",
+       }, {
+               in:   (func() Named)(nil),
+               want: "func() $PackagePath.Named",
+       }, {
+               in:   (func(int, Named) (int, error))(nil),
+               want: "func(int, $PackagePath.Named) (int, error)",
+       }, {
+               in:   (func(...Named))(nil),
+               want: "func(...$PackagePath.Named)",
+       }, {
+               in:   struct{}{},
+               want: "struct{}",
+       }, {
+               in:   struct{ Named }{},
+               want: "struct{ $PackagePath.Named }",
+       }, {
+               in: struct {
+                       Named `tag`
+               }{},
+               want: "struct{ $PackagePath.Named \"tag\" }",
+       }, {
+               in:   struct{ Named Named }{},
+               want: "struct{ Named $PackagePath.Named }",
+       }, {
+               in: struct {
+                       Named Named `tag`
+               }{},
+               want: "struct{ Named $PackagePath.Named \"tag\" }",
+       }, {
+               in: struct {
+                       Int   int
+                       Named Named
+               }{},
+               want: "struct{ Int int; Named $PackagePath.Named }",
+       }, {
+               in: struct {
+                       _ int
+                       x Named
+               }{},
+               want: "struct{ $FieldPrefix._ int; $FieldPrefix.x $PackagePath.Named }",
+       }, {
+               in:   []Named(nil),
+               want: "[]$PackagePath.Named",
+       }, {
+               in:   []*Named(nil),
+               want: "[]*$PackagePath.Named",
+       }, {
+               in:   [10]Named{},
+               want: "[10]$PackagePath.Named",
+       }, {
+               in:   [10]*Named{},
+               want: "[10]*$PackagePath.Named",
+       }, {
+               in:   map[string]string(nil),
+               want: "map[string]string",
+       }, {
+               in:   map[Named]Named(nil),
+               want: "map[$PackagePath.Named]$PackagePath.Named",
+       }, {
+               in:   (*Named)(nil),
+               want: "*$PackagePath.Named",
+       }, {
+               in:   (*interface{})(nil),
+               want: "*interface{}",
+       }, {
+               in:   (*interface{ Read([]byte) (int, error) })(nil),
+               want: "*interface{ Read([]uint8) (int, error) }",
+       }, {
+               in: (*interface {
+                       F1()
+                       F2(Named)
+                       F3() Named
+                       F4(int, Named) (int, error)
+                       F5(...Named)
+               })(nil),
+               want: "*interface{ F1(); F2($PackagePath.Named); F3() $PackagePath.Named; F4(int, $PackagePath.Named) (int, error); F5(...$PackagePath.Named) }",
+       }}
+
+       for _, tt := range tests {
+               typ := reflect.TypeOf(tt.in)
+               wantShort := tt.want
+               wantShort = strings.Replace(wantShort, "$PackagePath", "value", -1)
+               wantShort = strings.Replace(wantShort, "$FieldPrefix.", "", -1)
+               if gotShort := TypeString(typ, false); gotShort != wantShort {
+                       t.Errorf("TypeString(%v, false) mismatch:\ngot:  %v\nwant: %v", typ, gotShort, wantShort)
+               }
+               wantQualified := tt.want
+               wantQualified = strings.Replace(wantQualified, "$PackagePath", `"`+pkgPath+`"`, -1)
+               wantQualified = strings.Replace(wantQualified, "$FieldPrefix", `"`+pkgPath+`"`, -1)
+               if gotQualified := TypeString(typ, true); gotQualified != wantQualified {
+                       t.Errorf("TypeString(%v, true) mismatch:\ngot:  %v\nwant: %v", typ, gotQualified, wantQualified)
+               }
+       }
+}