37 lines
895 B
Go
37 lines
895 B
Go
package utils
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestIntOrInt64(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input interface{}
|
|
want int
|
|
ok bool
|
|
}{
|
|
{"int zero", int(0), 0, true},
|
|
{"int positive", int(42), 42, true},
|
|
{"int negative", int(-1), -1, true},
|
|
{"int64 zero", int64(0), 0, true},
|
|
{"int64 positive", int64(42), 42, true},
|
|
{"int64 negative", int64(-1), -1, true},
|
|
{"int64 large", int64(9223372036854775807), int(9223372036854775807), true}, // int==int64 on 64-bit
|
|
{"string", "42", 0, false},
|
|
{"float64", 42.0, 0, false},
|
|
{"nil", nil, 0, false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, ok := IntOrInt64(tt.input)
|
|
if ok != tt.ok {
|
|
t.Errorf("IntOrInt64(%v) ok = %v, want %v", tt.input, ok, tt.ok)
|
|
}
|
|
if ok && got != tt.want {
|
|
t.Errorf("IntOrInt64(%v) = %d, want %d", tt.input, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|