mirror of
https://github.com/jefferyjob/go-easy-utils.git
synced 2025-10-04 22:52:40 +08:00
138 lines
2.9 KiB
Go
138 lines
2.9 KiB
Go
package anyUtil
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestAnyToInt(t *testing.T) {
|
|
tests := []struct {
|
|
input interface{}
|
|
want int
|
|
}{
|
|
{1, 1},
|
|
{int8(2), 2},
|
|
{int16(3), 3},
|
|
{int32(4), 4},
|
|
{int64(5), 5},
|
|
{uint(6), 6},
|
|
{uint8(7), 7},
|
|
{uint16(8), 8},
|
|
{uint32(9), 9},
|
|
{uint64(10), 10},
|
|
{"11", 11},
|
|
{"invalid", 0},
|
|
}
|
|
for _, test := range tests {
|
|
got, err := AnyToInt(test.input)
|
|
if err != nil {
|
|
if test.want != 0 {
|
|
t.Errorf("AnyToInt(%v) error: %v", test.input, err)
|
|
}
|
|
} else if got != test.want {
|
|
t.Errorf("AnyToInt(%v) = %v, want %v", test.input, got, test.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAnyToInt8(t *testing.T) {
|
|
tests := []struct {
|
|
input interface{}
|
|
want int8
|
|
err bool
|
|
}{
|
|
{1, 1, false},
|
|
{int8(2), 2, false},
|
|
}
|
|
for _, test := range tests {
|
|
got, err := AnyToInt8(test.input)
|
|
if err != nil {
|
|
if !test.err {
|
|
t.Errorf("AnyToInt8(%v) error: %v", test.input, err)
|
|
}
|
|
} else if got != test.want {
|
|
t.Errorf("AnyToInt8(%v) = %v, want %v", test.input, got, test.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAnyToInt16(t *testing.T) {
|
|
tests := []struct {
|
|
input interface{}
|
|
want int16
|
|
err error
|
|
}{
|
|
{int16(42), 42, nil},
|
|
{int8(42), 42, nil},
|
|
{int32(42), 42, nil},
|
|
{int64(42), 42, nil},
|
|
{uint(42), 42, nil},
|
|
{uint8(42), 42, nil},
|
|
{uint16(42), 42, nil},
|
|
{uint32(42), 42, nil},
|
|
{uint64(42), 42, nil},
|
|
{"42", 42, nil},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
got, err := AnyToInt16(tt.input)
|
|
if got != tt.want || !errors.Is(err, tt.err) {
|
|
t.Errorf("AnyToInt16(%v) = (%v, %v); want (%v, %v)", tt.input, got, err, tt.want, tt.err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAnyToInt32(t *testing.T) {
|
|
tests := []struct {
|
|
input interface{}
|
|
want int32
|
|
err error
|
|
}{
|
|
{int32(42), 42, nil},
|
|
{int8(42), 42, nil},
|
|
{int16(42), 42, nil},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
got, err := AnyToInt32(tt.input)
|
|
if got != tt.want || !errors.Is(err, tt.err) {
|
|
t.Errorf("AnyToInt32(%v) = (%v, %v); want (%v, %v)", tt.input, got, err, tt.want, tt.err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAnyToInt64(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input interface{}
|
|
expected int64
|
|
err error
|
|
}{
|
|
{"int", 42, 42, nil},
|
|
{"int8", int8(42), 42, nil},
|
|
{"int16", int16(42), 42, nil},
|
|
{"int32", int32(42), 42, nil},
|
|
{"int64", int64(42), 42, nil},
|
|
{"uint", uint(42), 42, nil},
|
|
{"uint8", uint8(42), 42, nil},
|
|
{"uint16", uint16(42), 42, nil},
|
|
{"uint32", uint32(42), 42, nil},
|
|
{"uint64", uint64(42), 42, nil},
|
|
{"string", "42", 42, nil},
|
|
{"invalid", struct{}{}, 0, fmt.Errorf("unsupported type struct {}")},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result, err := AnyToInt64(tt.input)
|
|
if err != nil && err.Error() != tt.err.Error() {
|
|
t.Fatalf("unexpected error: expected %v, got %v", tt.err, err)
|
|
}
|
|
if result != tt.expected {
|
|
t.Fatalf("unexpected result: expected %v, got %v", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|