@@ -812,6 +812,32 @@ func TestAmount_UnmarshalJSON(t *testing.T) {
812
812
t .Errorf ("got %T, want currency.InvalidNumberError" , err )
813
813
}
814
814
815
+ d = []byte (`{"number": {"key": "value"}, "currency": "USD"}` )
816
+ err = json .Unmarshal (d , unmarshalled )
817
+ if e , ok := err .(currency.InvalidNumberError ); ok {
818
+ if e .Number != `{"key": "value"}` {
819
+ t .Errorf (`got %v, "want {"key": "value"}"` , e .Number )
820
+ }
821
+ wantError := `invalid number "{\"key\": \"value\"}"`
822
+ if e .Error () != wantError {
823
+ t .Errorf ("got %v, want %v" , e .Error (), wantError )
824
+ }
825
+ } else {
826
+ t .Errorf ("got %T, want currency.InvalidNumberError" , err )
827
+ }
828
+
829
+ d = []byte (`{"number":3.45,"currency":"USD"}` )
830
+ err = json .Unmarshal (d , unmarshalled )
831
+ if err != nil {
832
+ t .Errorf ("unexpected error: %v" , err )
833
+ }
834
+ if unmarshalled .Number () != "3.45" {
835
+ t .Errorf ("got %v, want 3.45" , unmarshalled .Number ())
836
+ }
837
+ if unmarshalled .CurrencyCode () != "USD" {
838
+ t .Errorf ("got %v, want USD" , unmarshalled .CurrencyCode ())
839
+ }
840
+
815
841
d = []byte (`{"number":"3.45","currency":"usd"}` )
816
842
err = json .Unmarshal (d , unmarshalled )
817
843
if e , ok := err .(currency.InvalidCurrencyCodeError ); ok {
0 commit comments