blob: 0fdfc27551a7365831b2ee6a16509acb6c2ac3ad [file] [edit]
// Copyright 2015 Kevin Gillette. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package testdata
import "reflect"
// IsEqual is a simple int slice equality implementation.
func IsEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
// ConvField converts and stores the value of src.field into dst. dst must
// be a pointer.
func ConvField(dst interface{}, src interface{}, field string) {
v1 := reflect.ValueOf(dst).Elem()
v2 := reflect.ValueOf(src)
v2 = v2.FieldByName(field)
v2 = v2.Convert(v1.Type())
v1.Set(v2)
}
// ConvMethod converts and stores the method expression of type(src).method
// into dst. dst must be a pointer to function type.
func ConvMethod(dst interface{}, src interface{}, method string) {
v1 := reflect.ValueOf(dst).Elem()
t := reflect.TypeOf(src)
op, _ := t.MethodByName(method)
v2 := op.Func.Convert(v1.Type())
v1.Set(v2)
}