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

Function SendAndReceive

projects/Go/tests/send_receive_test.go:43–73  ·  view source on GitHub ↗
(index1 int, index2 int)

Source from the content-addressed store, hash-verified

41func (r *MyReceiver) OnReceiveAccountMessage(value *proto.AccountMessage) { r.account = true }
42
43func SendAndReceive(index1 int, index2 int) bool {
44 sender := NewMySender()
45
46 // Create and send a new order
47 order := proto.OrderMessage{Body: proto.Order{Id: 1, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_market, Price: 1.23456, Volume: 1000.0}}
48 _, _ = sender.Send(&order)
49
50 // Create and send a new balance wallet
51 balance := proto.BalanceMessage{Body: proto.Balance{Currency: "USD", Amount: 1000.0}}
52 _, _ = sender.Send(&balance)
53
54 // Create and send a new account with some orders
55 account := proto.AccountMessage{Body: *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))}
56 account.Body.Orders = append(account.Body.Orders, proto.Order{Id: 1, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_market, Price: 1.23456, Volume: 1000.0})
57 account.Body.Orders = append(account.Body.Orders, proto.Order{Id: 2, Symbol: "EURUSD", Side: proto.OrderSide_sell, Type: proto.OrderType_limit, Price: 1.0, Volume: 100.0})
58 account.Body.Orders = append(account.Body.Orders, proto.Order{Id: 3, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_stop, Price: 1.5, Volume: 10.0})
59 _, _ = sender.Send(&account)
60
61 receiver := NewMyReceiver()
62
63 // Receive data from the sender
64 index1 %= sender.Buffer().Size()
65 index2 %= sender.Buffer().Size()
66 if index2 < index1 {
67 index2 = index1
68 }
69 _ = receiver.Receive(sender.Buffer().Data()[:index1])
70 _ = receiver.Receive(sender.Buffer().Data()[index1:index2])
71 _ = receiver.Receive(sender.Buffer().Data()[index2:])
72 return receiver.Check()
73}
74
75func TestSendAndReceive(t *testing.T) {
76 for i := 0; i < 1000; i++ {

Callers 2

TestSendAndReceiveFunction · 0.70
SendAndReceiveTestMethod · 0.50

Calls 8

CheckMethod · 0.95
DataMethod · 0.80
NewMySenderFunction · 0.70
NewMyReceiverFunction · 0.70
SendMethod · 0.45
SizeMethod · 0.45
BufferMethod · 0.45
ReceiveMethod · 0.45

Tested by

no test coverage detected