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

Function TestExtendingOldNew

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

Source from the content-addressed store, hash-verified

7import "../proto/protoex"
8
9func TestExtendingOldNew(t *testing.T) {
10 // Create a new account with some orders
11 var account1 = proto.NewAccountFromFieldValues(1, "Test", proto.State_good, proto.Balance{Currency: "USD", Amount: 1000.0}, &proto.Balance{Currency: "EUR", Amount: 100.0}, make([]proto.Order, 0))
12 account1.Orders = append(account1.Orders, proto.Order{Id: 1, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_market, Price: 1.23456, Volume: 1000.0})
13 account1.Orders = append(account1.Orders, proto.Order{Id: 2, Symbol: "EURUSD", Side: proto.OrderSide_sell, Type: proto.OrderType_limit, Price: 1.0, Volume: 100.0})
14 account1.Orders = append(account1.Orders, proto.Order{Id: 3, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_stop, Price: 1.5, Volume: 10.0})
15
16 // Serialize the struct to the FBE stream
17 writer := proto.NewAccountModel(fbe.NewEmptyBuffer())
18 assert.EqualValues(t, writer.Model().FBEOffset(), 4)
19 serialized, err := writer.Serialize(account1)
20 assert.Nil(t, err)
21 assert.EqualValues(t, serialized, writer.Buffer().Size())
22 assert.True(t, writer.Verify())
23 writer.Next(serialized)
24 assert.EqualValues(t, writer.Model().FBEOffset(), 4+writer.Buffer().Size())
25
26 // Check the serialized FBE size
27 assert.EqualValues(t, writer.Buffer().Size(), 252)
28
29 // Deserialize the struct from the FBE stream
30 reader := protoex.NewAccountModel(writer.Buffer())
31 assert.EqualValues(t, reader.Model().FBEOffset(), 4)
32 assert.True(t, reader.Verify())
33 account2, deserialized, err := reader.Deserialize()
34 assert.Nil(t, err)
35 assert.EqualValues(t, deserialized, reader.Buffer().Size())
36 reader.Next(deserialized)
37 assert.EqualValues(t, reader.Model().FBEOffset(), 4+reader.Buffer().Size())
38
39 assert.EqualValues(t, account2.Id, 1)
40 assert.EqualValues(t, account2.Name, "Test")
41 assert.True(t, account2.State.HasFlags(protoex.StateEx_good))
42 assert.EqualValues(t, account2.Wallet.Currency, "USD")
43 assert.EqualValues(t, account2.Wallet.Amount, 1000.0)
44 assert.EqualValues(t, account2.Wallet.Locked, 0.0)
45 assert.NotNil(t, account2.Asset)
46 assert.EqualValues(t, account2.Asset.Currency, "EUR")
47 assert.EqualValues(t, account2.Asset.Amount, 100.0)
48 assert.EqualValues(t, account2.Asset.Locked, 0.0)
49 assert.EqualValues(t, len(account2.Orders), 3)
50 assert.EqualValues(t, account2.Orders[0].Id, 1)
51 assert.EqualValues(t, account2.Orders[0].Symbol, "EURUSD")
52 assert.EqualValues(t, account2.Orders[0].Side, protoex.OrderSide_buy)
53 assert.EqualValues(t, account2.Orders[0].Type, protoex.OrderType_market)
54 assert.EqualValues(t, account2.Orders[0].Price, 1.23456)
55 assert.EqualValues(t, account2.Orders[0].Volume, 1000.0)
56 assert.EqualValues(t, account2.Orders[0].Tp, 10.0)
57 assert.EqualValues(t, account2.Orders[0].Sl, -10.0)
58 assert.EqualValues(t, account2.Orders[1].Id, 2)
59 assert.EqualValues(t, account2.Orders[1].Symbol, "EURUSD")
60 assert.EqualValues(t, account2.Orders[1].Side, protoex.OrderSide_sell)
61 assert.EqualValues(t, account2.Orders[1].Type, protoex.OrderType_limit)
62 assert.EqualValues(t, account2.Orders[1].Price, 1.0)
63 assert.EqualValues(t, account2.Orders[1].Volume, 100.0)
64 assert.EqualValues(t, account2.Orders[1].Tp, 10.0)
65 assert.EqualValues(t, account2.Orders[1].Sl, -10.0)
66 assert.EqualValues(t, account2.Orders[2].Id, 3)

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