Skip to content

Commit 4dc4f73

Browse files
committed
bbgo: add pending order test cases
1 parent 10eba87 commit 4dc4f73

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

pkg/bbgo/activeorderbook.go

+6
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,8 @@ func (b *ActiveOrderBook) add(order types.Order) {
312312
} else {
313313
b.orders.Add(order)
314314
}
315+
316+
b.pendingOrderUpdates.Remove(order.OrderID)
315317
} else {
316318
b.orders.Add(order)
317319
}
@@ -321,6 +323,10 @@ func (b *ActiveOrderBook) Exists(order types.Order) bool {
321323
return b.orders.Exists(order.OrderID)
322324
}
323325

326+
func (b *ActiveOrderBook) Get(orderID uint64) (types.Order, bool) {
327+
return b.orders.Get(orderID)
328+
}
329+
324330
func (b *ActiveOrderBook) Remove(order types.Order) bool {
325331
return b.orders.Remove(order.OrderID)
326332
}

pkg/bbgo/activeorderbook_test.go

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package bbgo
2+
3+
import (
4+
"testing"
5+
"time"
6+
7+
"github.com/stretchr/testify/assert"
8+
9+
"github.com/c9s/bbgo/pkg/fixedpoint"
10+
"github.com/c9s/bbgo/pkg/types"
11+
)
12+
13+
func TestActiveOrderBook_pendingOrders(t *testing.T) {
14+
now := time.Now()
15+
ob := NewActiveOrderBook("")
16+
17+
// if we received filled order first
18+
// should be added to pending orders
19+
ob.orderUpdateHandler(types.Order{
20+
OrderID: 99,
21+
SubmitOrder: types.SubmitOrder{
22+
Symbol: "BTCUSDT",
23+
Side: types.SideTypeBuy,
24+
Type: types.OrderTypeLimit,
25+
Quantity: number(0.01),
26+
Price: number(19000.0),
27+
AveragePrice: fixedpoint.Zero,
28+
StopPrice: fixedpoint.Zero,
29+
},
30+
Status: types.OrderStatusFilled,
31+
CreationTime: types.Time(now),
32+
UpdateTime: types.Time(now),
33+
})
34+
35+
assert.Len(t, ob.pendingOrderUpdates.Orders(), 1)
36+
37+
// should be added to pending orders
38+
ob.Add(types.Order{
39+
OrderID: 99,
40+
SubmitOrder: types.SubmitOrder{
41+
Symbol: "BTCUSDT",
42+
Side: types.SideTypeBuy,
43+
Type: types.OrderTypeLimit,
44+
Quantity: number(0.01),
45+
Price: number(19000.0),
46+
AveragePrice: fixedpoint.Zero,
47+
StopPrice: fixedpoint.Zero,
48+
},
49+
Status: types.OrderStatusNew,
50+
CreationTime: types.Time(now),
51+
UpdateTime: types.Time(now.Add(-time.Second)),
52+
})
53+
54+
o99, ok := ob.Get(99)
55+
assert.True(t, ok)
56+
assert.Equal(t, types.OrderStatusFilled, o99.Status)
57+
}

0 commit comments

Comments
 (0)