You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
3.1 KiB
Go
165 lines
3.1 KiB
Go
package nmath_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"git.noahlan.cn/noahlan/ntool/nmath"
|
|
"git.noahlan.cn/noahlan/ntool/ntest/assert"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestToInt(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
tests := []any{
|
|
2,
|
|
int8(2), int16(2), int32(2), int64(2),
|
|
uint(2), uint8(2), uint16(2), uint32(2), uint64(2),
|
|
float32(2.2), 2.3,
|
|
"2",
|
|
time.Duration(2),
|
|
json.Number("2"),
|
|
}
|
|
errTests := []any{
|
|
nil,
|
|
"2a",
|
|
[]int{1},
|
|
}
|
|
|
|
// To int
|
|
intVal, err := nmath.Int("2")
|
|
is.Nil(err)
|
|
is.Eq(2, intVal)
|
|
|
|
intVal, err = nmath.ToInt("-2")
|
|
is.Nil(err)
|
|
is.Eq(-2, intVal)
|
|
|
|
is.Eq(2, nmath.StrInt("2"))
|
|
|
|
intVal, err = nmath.IntOrErr("-2")
|
|
is.Nil(err)
|
|
is.Eq(-2, intVal)
|
|
|
|
is.Eq(-2, nmath.MustInt("-2"))
|
|
for _, in := range tests {
|
|
is.Eq(2, nmath.MustInt(in))
|
|
is.Eq(2, nmath.QuietInt(in))
|
|
}
|
|
for _, in := range errTests {
|
|
is.Eq(0, nmath.MustInt(in))
|
|
}
|
|
|
|
// To uint
|
|
uintVal, err := nmath.Uint("2")
|
|
is.Nil(err)
|
|
is.Eq(uint64(2), uintVal)
|
|
|
|
uintVal, err = nmath.UintOrErr("2")
|
|
is.Nil(err)
|
|
is.Eq(uint64(2), uintVal)
|
|
|
|
_, err = nmath.ToUint("-2")
|
|
is.Err(err)
|
|
|
|
is.Eq(uint64(0), nmath.MustUint("-2"))
|
|
for _, in := range tests {
|
|
is.Eq(uint64(2), nmath.MustUint(in))
|
|
}
|
|
for _, in := range errTests {
|
|
is.Eq(uint64(0), nmath.QuietUint(in))
|
|
is.Eq(uint64(0), nmath.MustUint(in))
|
|
}
|
|
|
|
// To int64
|
|
i64Val, err := nmath.ToInt64("2")
|
|
is.Nil(err)
|
|
is.Eq(int64(2), i64Val)
|
|
|
|
i64Val, err = nmath.Int64("-2")
|
|
is.Nil(err)
|
|
is.Eq(int64(-2), i64Val)
|
|
|
|
i64Val, err = nmath.Int64OrErr("-2")
|
|
is.Nil(err)
|
|
is.Eq(int64(-2), i64Val)
|
|
|
|
for _, in := range tests {
|
|
is.Eq(int64(2), nmath.MustInt64(in))
|
|
}
|
|
for _, in := range errTests {
|
|
is.Eq(int64(0), nmath.MustInt64(in))
|
|
is.Eq(int64(0), nmath.QuietInt64(in))
|
|
is.Eq(int64(0), nmath.SafeInt64(in))
|
|
}
|
|
}
|
|
|
|
func TestToString(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
tests := []any{
|
|
2,
|
|
int8(2), int16(2), int32(2), int64(2),
|
|
uint(2), uint8(2), uint16(2), uint32(2), uint64(2),
|
|
float32(2), float64(2),
|
|
// "2",
|
|
time.Duration(2),
|
|
json.Number("2"),
|
|
}
|
|
|
|
for _, in := range tests {
|
|
is.Eq("2", nmath.String(in))
|
|
is.Eq("2", nmath.QuietString(in))
|
|
is.Eq("2", nmath.MustString(in))
|
|
val, err := nmath.ToString(in)
|
|
is.NoErr(err)
|
|
is.Eq("2", val)
|
|
}
|
|
|
|
val, err := nmath.StringOrErr(2)
|
|
is.NoErr(err)
|
|
is.Eq("2", val)
|
|
|
|
val, err = nmath.ToString(nil)
|
|
is.NoErr(err)
|
|
is.Eq("", val)
|
|
|
|
is.Panics(func() {
|
|
nmath.MustString("2")
|
|
})
|
|
}
|
|
|
|
func TestToFloat(t *testing.T) {
|
|
is := assert.New(t)
|
|
|
|
tests := []any{
|
|
2,
|
|
int8(2), int16(2), int32(2), int64(2),
|
|
uint(2), uint8(2), uint16(2), uint32(2), uint64(2),
|
|
float32(2), float64(2),
|
|
"2",
|
|
time.Duration(2),
|
|
json.Number("2"),
|
|
}
|
|
for _, in := range tests {
|
|
is.Eq(float64(2), nmath.MustFloat(in))
|
|
}
|
|
|
|
is.Eq(123.5, nmath.MustFloat("123.5"))
|
|
is.Eq(123.5, nmath.QuietFloat("123.5"))
|
|
is.Panics(func() { nmath.MustFloat("invalid") }, "ok")
|
|
is.Eq(float64(0), nmath.QuietFloat("invalid"))
|
|
|
|
fltVal, err := nmath.ToFloat("123.5")
|
|
is.Nil(err)
|
|
is.Eq(123.5, fltVal)
|
|
|
|
fltVal, err = nmath.Float("-123.5")
|
|
is.Nil(err)
|
|
is.Eq(-123.5, fltVal)
|
|
|
|
fltVal, err = nmath.FloatOrErr("-123.5")
|
|
is.Nil(err)
|
|
is.Eq(-123.5, fltVal)
|
|
}
|