|
@@ -0,0 +1,128 @@
|
|
|
+package sentio
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "reflect"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+func TestOrderIntent_MarshalJSON(t *testing.T) {
|
|
|
+ type Obj struct {
|
|
|
+ Intent OrderIntent `json:"intent"`
|
|
|
+ }
|
|
|
+
|
|
|
+ tests := []struct {
|
|
|
+ obj Obj
|
|
|
+ want []byte
|
|
|
+ }{
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: BuyToOpen},
|
|
|
+ want: []byte(`{"intent":"buy_to_open"}`),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: BuyToClose},
|
|
|
+ want: []byte(`{"intent":"buy_to_close"}`),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: SellToOpen},
|
|
|
+ want: []byte(`{"intent":"sell_to_open"}`),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: SellToClose},
|
|
|
+ want: []byte(`{"intent":"sell_to_close"}`),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: -1},
|
|
|
+ want: []byte(`{"intent":"undefined"}`),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{Intent: 100},
|
|
|
+ want: []byte(`{"intent":"undefined"}`),
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, tt := range tests {
|
|
|
+ t.Run("TestOrderIntent", func(t *testing.T) {
|
|
|
+ if got, _ := json.Marshal(tt.obj); !reflect.DeepEqual(got, tt.want) {
|
|
|
+ t.Errorf("MarshalJSON() got = %v, want %v", got, tt.want)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestOrderIntent_UnmarshalJSON(t *testing.T) {
|
|
|
+ type Obj struct {
|
|
|
+ Intent OrderIntent `json:"intent"`
|
|
|
+ }
|
|
|
+
|
|
|
+ tests := []struct {
|
|
|
+ obj Obj
|
|
|
+ data []byte
|
|
|
+ wantErr bool
|
|
|
+ }{
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: BuyToOpen,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":"buy_to_open"}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: BuyToClose,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":"buy_to_close"}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: SellToOpen,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":"sell_to_open"}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: SellToClose,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":"sell_to_close"}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: SellToClose,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":3}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: BuyToOpen,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":19}`),
|
|
|
+ wantErr: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ obj: Obj{
|
|
|
+ Intent: BuyToOpen,
|
|
|
+ },
|
|
|
+ data: []byte(`{"intent":null}`),
|
|
|
+ wantErr: false,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, tt := range tests {
|
|
|
+ t.Run("TestOrderIntent", func(t *testing.T) {
|
|
|
+ var v Obj
|
|
|
+
|
|
|
+ if err := json.Unmarshal(tt.data, &v); (err != nil) != tt.wantErr {
|
|
|
+ t.Errorf("UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if !reflect.DeepEqual(v, tt.obj) {
|
|
|
+ t.Errorf("MarshalJSON() got = %v, want %v", v, tt.obj)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|