33 lines
679 B
Go
33 lines
679 B
Go
package sys
|
|
|
|
import "testing"
|
|
|
|
func TestParseCents(t *testing.T) {
|
|
tests := []struct {
|
|
value string
|
|
want int64
|
|
}{
|
|
{"0", 0},
|
|
{"0.01", 1},
|
|
{"12.3", 1230},
|
|
{"999.99", 99999},
|
|
}
|
|
for _, item := range tests {
|
|
got, err := parseCents(item.value)
|
|
if err != nil {
|
|
t.Fatalf("parseCents(%q) returned error: %v", item.value, err)
|
|
}
|
|
if got != item.want {
|
|
t.Fatalf("parseCents(%q)=%d, want %d", item.value, got, item.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseCentsRejectsInvalidValues(t *testing.T) {
|
|
for _, value := range []string{"", "-1", "1.001", "abc", "1.2.3"} {
|
|
if _, err := parseCents(value); err == nil {
|
|
t.Fatalf("parseCents(%q) should fail", value)
|
|
}
|
|
}
|
|
}
|