implement amount.go:Amount:AbsoluteValue
parent
55422bb8af
commit
2e135f2e8f
|
|
@ -44,6 +44,13 @@ var localizedLanguagePrinter = func() *message.Printer {
|
|||
return message.NewPrinter(result)
|
||||
}()
|
||||
|
||||
func (amount Amount) AbsoluteValue() Amount {
|
||||
if amount < 0 {
|
||||
return -1.0 * amount
|
||||
}
|
||||
return amount
|
||||
}
|
||||
|
||||
// Rounded rounds a float to the number of places specified.
|
||||
func (amount Amount) Rounded(places int) Amount {
|
||||
p := math.Pow10(places)
|
||||
|
|
|
|||
|
|
@ -87,3 +87,33 @@ func TestFormatUSD(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestAmountAbsoluteValue(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
input Amount
|
||||
want Amount
|
||||
}{
|
||||
"zero": {
|
||||
input: Amount(0.0),
|
||||
want: Amount(0.0),
|
||||
},
|
||||
"positive unchanged": {
|
||||
input: Amount(1.0),
|
||||
want: Amount(1.0),
|
||||
},
|
||||
"negative unchanged": {
|
||||
input: Amount(-0.000001),
|
||||
want: Amount(0.000001),
|
||||
},
|
||||
}
|
||||
|
||||
for name, td := range cases {
|
||||
tt := td // go bug through 1.21+ requires allocating a new variable or setting a go env for experimental features as of go 1.20 (1.21?)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
got := tt.input.AbsoluteValue()
|
||||
if got != tt.want {
|
||||
t.Errorf("got \n\t%v, want\n\t%v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue