52 lines
1017 B
Go
52 lines
1017 B
Go
// +build unittest
|
|
|
|
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"math/big"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestAmount_MarshalJSON(t *testing.T) {
|
|
type amounts struct {
|
|
A1 Amount `json:"a1"`
|
|
A2 Amount `json:"a2,omitempty"`
|
|
PA1 *Amount `json:"pa1"`
|
|
PA2 *Amount `json:"pa2,omitempty"`
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
a amounts
|
|
want string
|
|
}{
|
|
{
|
|
name: "empty",
|
|
want: `{"a1":"0","a2":"0","pa1":null}`,
|
|
},
|
|
{
|
|
name: "1",
|
|
a: amounts{
|
|
A1: (Amount)(*big.NewInt(123456)),
|
|
A2: (Amount)(*big.NewInt(787901)),
|
|
PA1: (*Amount)(big.NewInt(234567)),
|
|
PA2: (*Amount)(big.NewInt(890123)),
|
|
},
|
|
want: `{"a1":"123456","a2":"787901","pa1":"234567","pa2":"890123"}`,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
b, err := json.Marshal(&tt.a)
|
|
if err != nil {
|
|
t.Errorf("json.Marshal() error = %v", err)
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(string(b), tt.want) {
|
|
t.Errorf("json.Marshal() = %v, want %v", string(b), tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|