56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
// Copyright (c) 2013, Prometheus Team
|
|
// All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package prometheus
|
|
|
|
import (
|
|
. "github.com/matttproud/gocheck"
|
|
"math"
|
|
"reflect"
|
|
)
|
|
|
|
type isNaNChecker struct {
|
|
*CheckerInfo
|
|
}
|
|
|
|
// This piece provides a simple tester for the gocheck testing library to
|
|
// ascertain if a value is not-a-number.
|
|
var IsNaN Checker = &isNaNChecker{
|
|
&CheckerInfo{Name: "IsNaN", Params: []string{"value"}},
|
|
}
|
|
|
|
func (checker *isNaNChecker) Check(params []interface{}, names []string) (result bool, error string) {
|
|
return isNaN(params[0]), ""
|
|
}
|
|
|
|
func isNaN(obtained interface{}) (result bool) {
|
|
if obtained == nil {
|
|
result = false
|
|
} else {
|
|
switch v := reflect.ValueOf(obtained); v.Kind() {
|
|
case reflect.Float64:
|
|
return math.IsNaN(obtained.(float64))
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
type valueEqualsChecker struct {
|
|
*CheckerInfo
|
|
}
|
|
|
|
var ValueEquals Checker = &valueEqualsChecker{
|
|
&CheckerInfo{Name: "IsValue", Params: []string{"obtained", "expected"}},
|
|
}
|
|
|
|
func (checker *valueEqualsChecker) Check(params []interface{}, names []string) (result bool, error string) {
|
|
actual := params[0].(*item).Value
|
|
expected := params[1]
|
|
|
|
return actual == expected, ""
|
|
}
|