diff --git a/j5types/decimal_j5t/decimal.go b/j5types/decimal_j5t/decimal.go index 1f6ecc8..f65e8ca 100644 --- a/j5types/decimal_j5t/decimal.go +++ b/j5types/decimal_j5t/decimal.go @@ -7,7 +7,7 @@ import ( "github.com/shopspring/decimal" ) -var reDecimal = regexp.MustCompile(`^-?\d+(\.\d+)?$`) +var reDecimal = regexp.MustCompile(`^-?\d*(\.\d+)?$`) func (d *Decimal) ToShop() (decimal.Decimal, error) { return decimal.NewFromString(d.Value) @@ -19,7 +19,12 @@ func (dd *Decimal) UnmarshalText(data []byte) error { return fmt.Errorf("invalid decimal format: %s", string(data)) } - dd.Value = str + d, err := decimal.NewFromString(str) + if err != nil { + return fmt.Errorf("error converting %s to decimal: %v", string(data), err) + } + + dd.Value = d.String() return nil } @@ -132,7 +137,14 @@ type Testing interface { Errorf(format string, args ...any) } +type helper interface { + Helper() +} + func AssertEqual(t Testing, want string, d1 *Decimal, name string) { + if h, ok := t.(helper); ok { + h.Helper() + } dWant, err := decimal.NewFromString(want) if err != nil { t.Errorf("%s: error converting want %s to decimal: %v", name, want, err)