xref: /aosp_15_r20/external/go-cmp/cmp/internal/function/func_test.go (revision 88d15eac089d7f20c739ff1001d56b91872b21a1)
1*88d15eacSSasha Smundak// Copyright 2019, The Go Authors. All rights reserved.
2*88d15eacSSasha Smundak// Use of this source code is governed by a BSD-style
3*88d15eacSSasha Smundak// license that can be found in the LICENSE file.
4*88d15eacSSasha Smundak
5*88d15eacSSasha Smundakpackage function
6*88d15eacSSasha Smundak
7*88d15eacSSasha Smundakimport (
8*88d15eacSSasha Smundak	"bytes"
9*88d15eacSSasha Smundak	"reflect"
10*88d15eacSSasha Smundak	"testing"
11*88d15eacSSasha Smundak)
12*88d15eacSSasha Smundak
13*88d15eacSSasha Smundaktype myType struct{ bytes.Buffer }
14*88d15eacSSasha Smundak
15*88d15eacSSasha Smundakfunc (myType) valueMethod() {}
16*88d15eacSSasha Smundakfunc (myType) ValueMethod() {}
17*88d15eacSSasha Smundak
18*88d15eacSSasha Smundakfunc (*myType) pointerMethod() {}
19*88d15eacSSasha Smundakfunc (*myType) PointerMethod() {}
20*88d15eacSSasha Smundak
21*88d15eacSSasha Smundakfunc TestNameOf(t *testing.T) {
22*88d15eacSSasha Smundak	tests := []struct {
23*88d15eacSSasha Smundak		fnc  interface{}
24*88d15eacSSasha Smundak		want string
25*88d15eacSSasha Smundak	}{
26*88d15eacSSasha Smundak		{TestNameOf, "function.TestNameOf"},
27*88d15eacSSasha Smundak		{func() {}, "function.TestNameOf.func1"},
28*88d15eacSSasha Smundak		{(myType).valueMethod, "function.myType.valueMethod"},
29*88d15eacSSasha Smundak		{(myType).ValueMethod, "function.myType.ValueMethod"},
30*88d15eacSSasha Smundak		{(myType{}).valueMethod, "function.myType.valueMethod"},
31*88d15eacSSasha Smundak		{(myType{}).ValueMethod, "function.myType.ValueMethod"},
32*88d15eacSSasha Smundak		{(*myType).valueMethod, "function.myType.valueMethod"},
33*88d15eacSSasha Smundak		{(*myType).ValueMethod, "function.myType.ValueMethod"},
34*88d15eacSSasha Smundak		{(&myType{}).valueMethod, "function.myType.valueMethod"},
35*88d15eacSSasha Smundak		{(&myType{}).ValueMethod, "function.myType.ValueMethod"},
36*88d15eacSSasha Smundak		{(*myType).pointerMethod, "function.myType.pointerMethod"},
37*88d15eacSSasha Smundak		{(*myType).PointerMethod, "function.myType.PointerMethod"},
38*88d15eacSSasha Smundak		{(&myType{}).pointerMethod, "function.myType.pointerMethod"},
39*88d15eacSSasha Smundak		{(&myType{}).PointerMethod, "function.myType.PointerMethod"},
40*88d15eacSSasha Smundak		{(*myType).Write, "function.myType.Write"},
41*88d15eacSSasha Smundak		{(&myType{}).Write, "bytes.Buffer.Write"},
42*88d15eacSSasha Smundak	}
43*88d15eacSSasha Smundak	for _, tt := range tests {
44*88d15eacSSasha Smundak		t.Run("", func(t *testing.T) {
45*88d15eacSSasha Smundak			got := NameOf(reflect.ValueOf(tt.fnc))
46*88d15eacSSasha Smundak			if got != tt.want {
47*88d15eacSSasha Smundak				t.Errorf("NameOf() = %v, want %v", got, tt.want)
48*88d15eacSSasha Smundak			}
49*88d15eacSSasha Smundak		})
50*88d15eacSSasha Smundak	}
51*88d15eacSSasha Smundak}
52