budgeteer/postgres/numeric/numeric_test.go
Jan Bader ea6d198bff
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
Add some unit-tests for numeric
2022-02-23 21:59:14 +00:00

76 lines
1.6 KiB
Go

package numeric_test
import (
"testing"
"git.javil.eu/jacob1123/budgeteer/postgres/numeric"
)
type TestCaseMarshalJSON struct {
Value numeric.Numeric
Result string
}
func TestMarshalJSON(t *testing.T) {
tests := []TestCaseMarshalJSON{
{numeric.Zero(), `0`},
{numeric.MustParse("1.23"), "1.23"},
{numeric.MustParse("1,24"), "1.24"},
{numeric.MustParse("123456789.12345"), "123456789.12345"},
}
for _, test := range tests {
t.Run(test.Result, func(t *testing.T) {
z := test.Value
result, err := z.MarshalJSON()
if err != nil {
t.Error(err)
return
}
if string(result) != test.Result {
t.Errorf("Expected %s, got %s", test.Result, string(result))
return
}
})
}
}
type TestCaseParse struct {
Result numeric.Numeric
Value string
}
func TestParse(t *testing.T) {
tests := []TestCaseParse{
{numeric.Zero(), `0`},
{numeric.FromInt64(1), `1`},
{numeric.FromInt64WithExp(1, 1), `10`},
{numeric.FromInt64WithExp(1, 2), `100`},
{numeric.MustParse("1.23"), "1.23"},
{numeric.MustParse("1,24"), "1.24"},
{numeric.MustParse("123456789.12345"), "123456789.12345"},
}
for _, test := range tests {
t.Run(test.Value, func(t *testing.T) {
result, err := numeric.Parse(test.Value)
if err != nil {
t.Error(err)
return
}
if test.Result.Int.Int64() != result.Int.Int64() {
t.Errorf("Expected int %d, got %d", test.Result.Int, result.Int)
return
}
if test.Result.Exp != result.Exp {
t.Errorf("Expected exp %d, got %d", test.Result.Exp, result.Exp)
return
}
// if string(result) != test.Result {
// return
//}
})
}
}