mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-03-09 08:59:30 +00:00
Several packages are only used while running the e2e suite. These packages are less important to update, as the they can not influence the final executable that is part of the Ceph-CSI container-image. By moving these dependencies out of the main Ceph-CSI go.mod, it is easier to identify if a reported CVE affects Ceph-CSI, or only the testing (like most of the Kubernetes CVEs). Signed-off-by: Niels de Vos <ndevos@ibm.com>
98 lines
2.7 KiB
Go
98 lines
2.7 KiB
Go
package govalidator
|
|
|
|
import (
|
|
"math"
|
|
"reflect"
|
|
)
|
|
|
|
// Abs returns absolute value of number
|
|
func Abs(value float64) float64 {
|
|
return math.Abs(value)
|
|
}
|
|
|
|
// Sign returns signum of number: 1 in case of value > 0, -1 in case of value < 0, 0 otherwise
|
|
func Sign(value float64) float64 {
|
|
if value > 0 {
|
|
return 1
|
|
} else if value < 0 {
|
|
return -1
|
|
} else {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// IsNegative returns true if value < 0
|
|
func IsNegative(value float64) bool {
|
|
return value < 0
|
|
}
|
|
|
|
// IsPositive returns true if value > 0
|
|
func IsPositive(value float64) bool {
|
|
return value > 0
|
|
}
|
|
|
|
// IsNonNegative returns true if value >= 0
|
|
func IsNonNegative(value float64) bool {
|
|
return value >= 0
|
|
}
|
|
|
|
// IsNonPositive returns true if value <= 0
|
|
func IsNonPositive(value float64) bool {
|
|
return value <= 0
|
|
}
|
|
|
|
// InRange returns true if value lies between left and right border
|
|
func InRangeInt(value, left, right interface{}) bool {
|
|
value64, _ := ToInt(value)
|
|
left64, _ := ToInt(left)
|
|
right64, _ := ToInt(right)
|
|
if left64 > right64 {
|
|
left64, right64 = right64, left64
|
|
}
|
|
return value64 >= left64 && value64 <= right64
|
|
}
|
|
|
|
// InRange returns true if value lies between left and right border
|
|
func InRangeFloat32(value, left, right float32) bool {
|
|
if left > right {
|
|
left, right = right, left
|
|
}
|
|
return value >= left && value <= right
|
|
}
|
|
|
|
// InRange returns true if value lies between left and right border
|
|
func InRangeFloat64(value, left, right float64) bool {
|
|
if left > right {
|
|
left, right = right, left
|
|
}
|
|
return value >= left && value <= right
|
|
}
|
|
|
|
// InRange returns true if value lies between left and right border, generic type to handle int, float32 or float64, all types must the same type
|
|
func InRange(value interface{}, left interface{}, right interface{}) bool {
|
|
|
|
reflectValue := reflect.TypeOf(value).Kind()
|
|
reflectLeft := reflect.TypeOf(left).Kind()
|
|
reflectRight := reflect.TypeOf(right).Kind()
|
|
|
|
if reflectValue == reflect.Int && reflectLeft == reflect.Int && reflectRight == reflect.Int {
|
|
return InRangeInt(value.(int), left.(int), right.(int))
|
|
} else if reflectValue == reflect.Float32 && reflectLeft == reflect.Float32 && reflectRight == reflect.Float32 {
|
|
return InRangeFloat32(value.(float32), left.(float32), right.(float32))
|
|
} else if reflectValue == reflect.Float64 && reflectLeft == reflect.Float64 && reflectRight == reflect.Float64 {
|
|
return InRangeFloat64(value.(float64), left.(float64), right.(float64))
|
|
} else {
|
|
return false
|
|
}
|
|
}
|
|
|
|
// IsWhole returns true if value is whole number
|
|
func IsWhole(value float64) bool {
|
|
return math.Remainder(value, 1) == 0
|
|
}
|
|
|
|
// IsNatural returns true if value is natural number (positive and whole)
|
|
func IsNatural(value float64) bool {
|
|
return IsWhole(value) && IsPositive(value)
|
|
}
|