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