Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
881 B
41 lines
881 B
// Copyright 2021 The Gitea Authors. All rights reserved. |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package unittest |
|
|
|
import ( |
|
"log" |
|
"reflect" |
|
) |
|
|
|
func fieldByName(v reflect.Value, field string) reflect.Value { |
|
if v.Kind() == reflect.Ptr { |
|
v = v.Elem() |
|
} |
|
f := v.FieldByName(field) |
|
if !f.IsValid() { |
|
log.Panicf("can not read %s for %v", field, v) |
|
} |
|
return f |
|
} |
|
|
|
type reflectionValue struct { |
|
v reflect.Value |
|
} |
|
|
|
func reflectionWrap(v interface{}) *reflectionValue { |
|
return &reflectionValue{v: reflect.ValueOf(v)} |
|
} |
|
|
|
func (rv *reflectionValue) int(field string) int { |
|
return int(fieldByName(rv.v, field).Int()) |
|
} |
|
|
|
func (rv *reflectionValue) str(field string) string { |
|
return fieldByName(rv.v, field).String() |
|
} |
|
|
|
func (rv *reflectionValue) bool(field string) bool { |
|
return fieldByName(rv.v, field).Bool() |
|
}
|
|
|