mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-11-24 14:35:53 +00:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package utils
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateAmountFormat(t *testing.T) {
|
|
validCases := []string{
|
|
"0",
|
|
"1",
|
|
"1.0",
|
|
"0.1",
|
|
"0.12345678",
|
|
"111111111111.11111111", // 12 digits to the left of decimal, 8 digits to the right
|
|
"184467440737.09551615", // Maximum input that can be represented in sompi later
|
|
"184467440737.09551616", // Cannot be represented in sompi, but we'll acccept for "correct format"
|
|
"999999999999.99999999", // Cannot be represented in sompi, but we'll acccept for "correct format"
|
|
}
|
|
|
|
for _, testCase := range validCases {
|
|
err := ValidateAmountFormat(testCase)
|
|
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
invalidCases := []string{
|
|
"",
|
|
"a",
|
|
"-1",
|
|
"0.123456789", // 9 decimal digits
|
|
".1", // decimal but no integer component
|
|
"0a", // Extra character
|
|
"0000000000000", // 13 zeros
|
|
"012", // Int padded with zero
|
|
"00.1", // Decimal padded with zeros
|
|
"111111111111111111111", // all digits
|
|
"111111111111A11111111", // non-period/non-digit where decimal would be
|
|
"000000000000.00000000", // all zeros
|
|
"kaspa", // all text
|
|
}
|
|
|
|
for _, testCase := range invalidCases {
|
|
err := ValidateAmountFormat(testCase)
|
|
|
|
if err == nil {
|
|
t.Errorf("Expected an error but succeeded validation for test case %s", testCase)
|
|
}
|
|
}
|
|
}
|