featurebase/idk/util_test.go
2022-09-02 13:23:39 -07:00

71 lines
1.3 KiB
Go

package idk
import (
"fmt"
"testing"
)
func TestScaledStringToInt(t *testing.T) {
cases := []struct {
scale int64
num string
expected int64
err error
}{
{
scale: 2,
num: "80.74",
expected: 8074,
},
{
scale: 2,
num: "8.7",
expected: 870,
},
{
scale: 2,
num: "8.7498",
expected: 874,
},
{
scale: 2,
num: "1.235",
expected: 123,
},
{
scale: 2,
num: "00001.235",
expected: 123,
},
{
scale: 2,
num: "-00001.235000000",
expected: -123,
},
{
scale: 2,
num: "+00001.235000000",
expected: 123,
},
{
scale: 2,
num: "01.235000.000",
expected: 0,
err: fmt.Errorf("invalid decimal string: %v", "01.235000.000"),
},
}
for _, test := range cases {
t.Run(test.num, func(t *testing.T) {
res, err := scaledStringToInt(test.scale, test.num)
if res != test.expected {
t.Errorf("expected %v, got %v", test.expected, res)
}
if (test.err == nil && err != nil) || (test.err != nil && err == nil) {
t.Fatalf("expected %v, but got %v", test.err, err)
} else if test.err != nil && err != nil && test.err.Error() != err.Error() {
t.Fatalf("expected %v, but got %v", test.err, err)
}
})
}
}