26 lines
738 B
Go
26 lines
738 B
Go
package paymentutil
|
|
|
|
import "testing"
|
|
|
|
func TestDecimalAmountUsesIntegerMath(t *testing.T) {
|
|
got, err := ParseDecimalAmount("12.34", 100)
|
|
if err != nil || got != 1234 {
|
|
t.Fatalf("ParseDecimalAmount = %d, %v", got, err)
|
|
}
|
|
formatted, err := FormatDecimalAmount(got, 100)
|
|
if err != nil || formatted != "12.34" {
|
|
t.Fatalf("FormatDecimalAmount = %q, %v", formatted, err)
|
|
}
|
|
}
|
|
|
|
func TestDecimalAmountRejectsUnsafeInput(t *testing.T) {
|
|
for _, value := range []string{"-1.00", "1.001", "1.2.3"} {
|
|
if _, err := ParseDecimalAmount(value, 100); err == nil {
|
|
t.Fatalf("ParseDecimalAmount(%q) accepted unsafe input", value)
|
|
}
|
|
}
|
|
if _, err := ParseDecimalAmount("1", 3); err == nil {
|
|
t.Fatal("non power-of-ten scale accepted")
|
|
}
|
|
}
|