mirror of
https://github.com/Luzifer/cloudkeys-go.git
synced 2024-11-13 00:12:43 +00:00
93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
// Copyright 2013 Canonical Ltd.
|
|
// Licensed under the LGPLv3, see LICENCE file for details.
|
|
|
|
package checkers
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
|
|
gc "gopkg.in/check.v1"
|
|
)
|
|
|
|
// GreaterThan checker
|
|
|
|
type greaterThanChecker struct {
|
|
*gc.CheckerInfo
|
|
}
|
|
|
|
var GreaterThan gc.Checker = &greaterThanChecker{
|
|
&gc.CheckerInfo{Name: "GreaterThan", Params: []string{"obtained", "expected"}},
|
|
}
|
|
|
|
func (checker *greaterThanChecker) Check(params []interface{}, names []string) (result bool, error string) {
|
|
defer func() {
|
|
if v := recover(); v != nil {
|
|
result = false
|
|
error = fmt.Sprint(v)
|
|
}
|
|
}()
|
|
|
|
p0value := reflect.ValueOf(params[0])
|
|
p1value := reflect.ValueOf(params[1])
|
|
switch p0value.Kind() {
|
|
case reflect.Int,
|
|
reflect.Int8,
|
|
reflect.Int16,
|
|
reflect.Int32,
|
|
reflect.Int64:
|
|
return p0value.Int() > p1value.Int(), ""
|
|
case reflect.Uint,
|
|
reflect.Uint8,
|
|
reflect.Uint16,
|
|
reflect.Uint32,
|
|
reflect.Uint64:
|
|
return p0value.Uint() > p1value.Uint(), ""
|
|
case reflect.Float32,
|
|
reflect.Float64:
|
|
return p0value.Float() > p1value.Float(), ""
|
|
default:
|
|
}
|
|
return false, fmt.Sprintf("obtained value %s:%#v not supported", p0value.Kind(), params[0])
|
|
}
|
|
|
|
// LessThan checker
|
|
|
|
type lessThanChecker struct {
|
|
*gc.CheckerInfo
|
|
}
|
|
|
|
var LessThan gc.Checker = &lessThanChecker{
|
|
&gc.CheckerInfo{Name: "LessThan", Params: []string{"obtained", "expected"}},
|
|
}
|
|
|
|
func (checker *lessThanChecker) Check(params []interface{}, names []string) (result bool, error string) {
|
|
defer func() {
|
|
if v := recover(); v != nil {
|
|
result = false
|
|
error = fmt.Sprint(v)
|
|
}
|
|
}()
|
|
|
|
p0value := reflect.ValueOf(params[0])
|
|
p1value := reflect.ValueOf(params[1])
|
|
switch p0value.Kind() {
|
|
case reflect.Int,
|
|
reflect.Int8,
|
|
reflect.Int16,
|
|
reflect.Int32,
|
|
reflect.Int64:
|
|
return p0value.Int() < p1value.Int(), ""
|
|
case reflect.Uint,
|
|
reflect.Uint8,
|
|
reflect.Uint16,
|
|
reflect.Uint32,
|
|
reflect.Uint64:
|
|
return p0value.Uint() < p1value.Uint(), ""
|
|
case reflect.Float32,
|
|
reflect.Float64:
|
|
return p0value.Float() < p1value.Float(), ""
|
|
default:
|
|
}
|
|
return false, fmt.Sprintf("obtained value %s:%#v not supported", p0value.Kind(), params[0])
|
|
}
|