MCPcopy Create free account
hub / github.com/chronoxor/FastBinaryEncoding / TestExtendingNewOld

Function TestExtendingNewOld

projects/Go/tests/extending_test.go:76–133  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

74}
75
76func TestExtendingNewOld(t *testing.T) {
77 // Create a new account with some orders
78 var account1 = protoex.NewAccountFromFieldValues(1, "Test", protoex.StateEx_good | protoex.StateEx_happy, protoex.Balance{Balance: &proto.Balance{Currency: "USD", Amount: 1000.0}, Locked: 123.456}, &protoex.Balance{Balance: &proto.Balance{Currency: "EUR", Amount: 100.0}, Locked: 12.34}, make([]protoex.Order, 0))
79 account1.Orders = append(account1.Orders, protoex.Order{Id: 1, Symbol: "EURUSD", Side: protoex.OrderSide_buy, Type: protoex.OrderType_market, Price: 1.23456, Volume: 1000.0, Tp: 0.0, Sl: 0.0})
80 account1.Orders = append(account1.Orders, protoex.Order{Id: 2, Symbol: "EURUSD", Side: protoex.OrderSide_sell, Type: protoex.OrderType_limit, Price: 1.0, Volume: 100.0, Tp: 0.1, Sl: -0.1})
81 account1.Orders = append(account1.Orders, protoex.Order{Id: 3, Symbol: "EURUSD", Side: protoex.OrderSide_tell, Type: protoex.OrderType_stoplimit, Price: 1.5, Volume: 10.0, Tp: 1.1, Sl: -1.1})
82
83 // Serialize the struct to the FBE stream
84 writer := protoex.NewAccountModel(fbe.NewEmptyBuffer())
85 assert.EqualValues(t, writer.Model().FBEOffset(), 4)
86 serialized, err := writer.Serialize(account1)
87 assert.Nil(t, err)
88 assert.EqualValues(t, serialized, writer.Buffer().Size())
89 assert.True(t, writer.Verify())
90 writer.Next(serialized)
91 assert.EqualValues(t, writer.Model().FBEOffset(), 4+writer.Buffer().Size())
92
93 // Check the serialized FBE size
94 assert.EqualValues(t, writer.Buffer().Size(), 316)
95
96 // Deserialize the struct from the FBE stream
97 reader := proto.NewAccountModel(writer.Buffer())
98 assert.EqualValues(t, reader.Model().FBEOffset(), 4)
99 assert.True(t, reader.Verify())
100 account2, deserialized, err := reader.Deserialize()
101 assert.Nil(t, err)
102 assert.EqualValues(t, deserialized, reader.Buffer().Size())
103 reader.Next(deserialized)
104 assert.EqualValues(t, reader.Model().FBEOffset(), 4+reader.Buffer().Size())
105
106 assert.EqualValues(t, account2.Id, 1)
107 assert.EqualValues(t, account2.Name, "Test")
108 assert.True(t, account2.State.HasFlags(proto.State_good))
109 assert.EqualValues(t, account2.Wallet.Currency, "USD")
110 assert.EqualValues(t, account2.Wallet.Amount, 1000.0)
111 assert.NotNil(t, account2.Asset)
112 assert.EqualValues(t, account2.Asset.Currency, "EUR")
113 assert.EqualValues(t, account2.Asset.Amount, 100.0)
114 assert.EqualValues(t, len(account2.Orders), 3)
115 assert.EqualValues(t, account2.Orders[0].Id, 1)
116 assert.EqualValues(t, account2.Orders[0].Symbol, "EURUSD")
117 assert.EqualValues(t, account2.Orders[0].Side, proto.OrderSide_buy)
118 assert.EqualValues(t, account2.Orders[0].Type, proto.OrderType_market)
119 assert.EqualValues(t, account2.Orders[0].Price, 1.23456)
120 assert.EqualValues(t, account2.Orders[0].Volume, 1000.0)
121 assert.EqualValues(t, account2.Orders[1].Id, 2)
122 assert.EqualValues(t, account2.Orders[1].Symbol, "EURUSD")
123 assert.EqualValues(t, account2.Orders[1].Side, proto.OrderSide_sell)
124 assert.EqualValues(t, account2.Orders[1].Type, proto.OrderType_limit)
125 assert.EqualValues(t, account2.Orders[1].Price, 1.0)
126 assert.EqualValues(t, account2.Orders[1].Volume, 100.0)
127 assert.EqualValues(t, account2.Orders[2].Id, 3)
128 assert.EqualValues(t, account2.Orders[2].Symbol, "EURUSD")
129 assert.NotEqual(t, account2.Orders[2].Side, proto.OrderSide_buy)
130 assert.NotEqual(t, account2.Orders[2].Type, proto.OrderType_stop)
131 assert.EqualValues(t, account2.Orders[2].Price, 1.5)
132 assert.EqualValues(t, account2.Orders[2].Volume, 10.0)
133}

Callers

nothing calls this directly

Calls 10

ModelMethod · 0.95
SerializeMethod · 0.95
BufferMethod · 0.95
VerifyMethod · 0.95
NextMethod · 0.95
DeserializeMethod · 0.95
NilMethod · 0.80
FBEOffsetMethod · 0.45
SizeMethod · 0.45
HasFlagsMethod · 0.45

Tested by

no test coverage detected