52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
// Copyright 2019, 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 function
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type myType struct{ bytes.Buffer }
|
|
|
|
func (myType) valueMethod() {}
|
|
func (myType) ValueMethod() {}
|
|
|
|
func (*myType) pointerMethod() {}
|
|
func (*myType) PointerMethod() {}
|
|
|
|
func TestNameOf(t *testing.T) {
|
|
tests := []struct {
|
|
fnc interface{}
|
|
want string
|
|
}{
|
|
{TestNameOf, "function.TestNameOf"},
|
|
{func() {}, "function.TestNameOf.func1"},
|
|
{(myType).valueMethod, "function.myType.valueMethod"},
|
|
{(myType).ValueMethod, "function.myType.ValueMethod"},
|
|
{(myType{}).valueMethod, "function.myType.valueMethod"},
|
|
{(myType{}).ValueMethod, "function.myType.ValueMethod"},
|
|
{(*myType).valueMethod, "function.myType.valueMethod"},
|
|
{(*myType).ValueMethod, "function.myType.ValueMethod"},
|
|
{(&myType{}).valueMethod, "function.myType.valueMethod"},
|
|
{(&myType{}).ValueMethod, "function.myType.ValueMethod"},
|
|
{(*myType).pointerMethod, "function.myType.pointerMethod"},
|
|
{(*myType).PointerMethod, "function.myType.PointerMethod"},
|
|
{(&myType{}).pointerMethod, "function.myType.pointerMethod"},
|
|
{(&myType{}).PointerMethod, "function.myType.PointerMethod"},
|
|
{(*myType).Write, "function.myType.Write"},
|
|
{(&myType{}).Write, "bytes.Buffer.Write"},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run("", func(t *testing.T) {
|
|
got := NameOf(reflect.ValueOf(tt.fnc))
|
|
if got != tt.want {
|
|
t.Errorf("NameOf() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|