@@ -22,6 +22,9 @@ def test(self):
22
22
self .assertEqual (0 , book .size_buy ())
23
23
self .assertEqual (0 , book .size ())
24
24
25
+ #
26
+ # MARK: limit
27
+ #
25
28
26
29
class ShouldPlaceSellLimitOrder (TestCase ):
27
30
def test (self ):
@@ -42,27 +45,23 @@ def test(self):
42
45
self .assertEqual (1 , book .size ())
43
46
44
47
45
- class ShouldCancelSellLimitOrder (TestCase ):
48
+ class ShouldPlaceSellLimitOrderByValue (TestCase ):
46
49
def test (self ):
47
50
book = limit_order_book .LimitOrderBook ()
48
- book .limit_sell (1 , 100 , 50 )
49
- self .assertTrue (book .has (1 ))
50
- book .cancel (1 )
51
- self .assertFalse (book .has (1 ))
52
- self .assertEqual (0 , book .best_sell ())
51
+ book .limit (False , 1 , 100 , 50 )
52
+ self .assertEqual (50 , book .best_sell ())
53
53
self .assertEqual (0 , book .best_buy ())
54
- self .assertEqual (0 , book .best (False ))
54
+ self .assertEqual (50 , book .best (False ))
55
55
self .assertEqual (0 , book .best (True ))
56
- self .assertEqual (0 , book .volume_sell ())
57
- self .assertEqual (0 , book .volume_sell (100 ))
56
+ self .assertEqual (100 , book .volume_sell ())
57
+ self .assertEqual (100 , book .volume_sell (50 ))
58
58
self .assertEqual (0 , book .volume_buy ())
59
- self .assertEqual (0 , book .volume_buy (100 ))
60
- self .assertEqual (0 , book .volume ())
61
- self .assertEqual (0 , book .volume (100 ))
62
- self .assertEqual (0 , book .size_at (100 ))
63
- self .assertEqual (0 , book .size_sell ())
59
+ self .assertEqual (100 , book .volume ())
60
+ self .assertEqual (100 , book .volume (50 ))
61
+ self .assertEqual (1 , book .size_at (50 ))
62
+ self .assertEqual (1 , book .size_sell ())
64
63
self .assertEqual (0 , book .size_buy ())
65
- self .assertEqual (0 , book .size ())
64
+ self .assertEqual (1 , book .size ())
66
65
67
66
68
67
class ShouldPlaceBuyLimitOrder (TestCase ):
@@ -85,6 +84,97 @@ def test(self):
85
84
self .assertEqual (1 , book .size ())
86
85
87
86
87
+ class ShouldPlaceBuyLimitOrderByValue (TestCase ):
88
+ def test (self ):
89
+ book = limit_order_book .LimitOrderBook ()
90
+ book .limit (True , 1 , 100 , 50 )
91
+ self .assertEqual (0 , book .best_sell ())
92
+ self .assertEqual (50 , book .best_buy ())
93
+ self .assertEqual (0 , book .best (False ))
94
+ self .assertEqual (50 , book .best (True ))
95
+ self .assertEqual (0 , book .volume_sell ())
96
+ self .assertEqual (0 , book .volume_sell (50 ))
97
+ self .assertEqual (100 , book .volume_buy ())
98
+ self .assertEqual (100 , book .volume_buy (50 ))
99
+ self .assertEqual (100 , book .volume ())
100
+ self .assertEqual (100 , book .volume (50 ))
101
+ self .assertEqual (1 , book .size_at (50 ))
102
+ self .assertEqual (0 , book .size_sell ())
103
+ self .assertEqual (1 , book .size_buy ())
104
+ self .assertEqual (1 , book .size ())
105
+
106
+ #
107
+ # MARK: limit match
108
+ #
109
+
110
+ class ShouldMatchSellLimitOrderWithIncomingBuy (TestCase ):
111
+ def test (self ):
112
+ book = limit_order_book .LimitOrderBook ()
113
+ book .limit_sell (1 , 100 , 50 )
114
+ book .limit_buy (2 , 100 , 50 )
115
+ self .assertEqual (0 , book .best_sell ())
116
+ self .assertEqual (0 , book .best_buy ())
117
+ self .assertEqual (0 , book .best (False ))
118
+ self .assertEqual (0 , book .best (True ))
119
+ self .assertEqual (0 , book .volume_sell ())
120
+ self .assertEqual (0 , book .volume_sell (50 ))
121
+ self .assertEqual (0 , book .volume_buy ())
122
+ self .assertEqual (0 , book .volume_buy (50 ))
123
+ self .assertEqual (0 , book .volume ())
124
+ self .assertEqual (0 , book .volume (50 ))
125
+ self .assertEqual (0 , book .size_at (50 ))
126
+ self .assertEqual (0 , book .size_sell ())
127
+ self .assertEqual (0 , book .size_buy ())
128
+ self .assertEqual (0 , book .size ())
129
+
130
+
131
+ class ShouldMatchBuyLimitOrderWithIncomingSell (TestCase ):
132
+ def test (self ):
133
+ book = limit_order_book .LimitOrderBook ()
134
+ book .limit_buy (1 , 100 , 50 )
135
+ book .limit_sell (2 , 100 , 50 )
136
+ self .assertEqual (0 , book .best_sell ())
137
+ self .assertEqual (0 , book .best_buy ())
138
+ self .assertEqual (0 , book .best (False ))
139
+ self .assertEqual (0 , book .best (True ))
140
+ self .assertEqual (0 , book .volume_sell ())
141
+ self .assertEqual (0 , book .volume_sell (50 ))
142
+ self .assertEqual (0 , book .volume_buy ())
143
+ self .assertEqual (0 , book .volume_buy (50 ))
144
+ self .assertEqual (0 , book .volume ())
145
+ self .assertEqual (0 , book .volume (50 ))
146
+ self .assertEqual (0 , book .size_at (50 ))
147
+ self .assertEqual (0 , book .size_sell ())
148
+ self .assertEqual (0 , book .size_buy ())
149
+ self .assertEqual (0 , book .size ())
150
+
151
+ #
152
+ # MARK: cancel
153
+ #
154
+
155
+ class ShouldCancelSellLimitOrder (TestCase ):
156
+ def test (self ):
157
+ book = limit_order_book .LimitOrderBook ()
158
+ book .limit_sell (1 , 100 , 50 )
159
+ self .assertTrue (book .has (1 ))
160
+ book .cancel (1 )
161
+ self .assertFalse (book .has (1 ))
162
+ self .assertEqual (0 , book .best_sell ())
163
+ self .assertEqual (0 , book .best_buy ())
164
+ self .assertEqual (0 , book .best (False ))
165
+ self .assertEqual (0 , book .best (True ))
166
+ self .assertEqual (0 , book .volume_sell ())
167
+ self .assertEqual (0 , book .volume_sell (100 ))
168
+ self .assertEqual (0 , book .volume_buy ())
169
+ self .assertEqual (0 , book .volume_buy (100 ))
170
+ self .assertEqual (0 , book .volume ())
171
+ self .assertEqual (0 , book .volume (100 ))
172
+ self .assertEqual (0 , book .size_at (100 ))
173
+ self .assertEqual (0 , book .size_sell ())
174
+ self .assertEqual (0 , book .size_buy ())
175
+ self .assertEqual (0 , book .size ())
176
+
177
+
88
178
class ShouldCancelBuyLimitOrder (TestCase ):
89
179
def test (self ):
90
180
book = limit_order_book .LimitOrderBook ()
@@ -107,6 +197,9 @@ def test(self):
107
197
self .assertEqual (0 , book .size_buy ())
108
198
self .assertEqual (0 , book .size ())
109
199
200
+ #
201
+ # MARK: market
202
+ #
110
203
111
204
class ShouldPlaceSellMarketOrderEmptyBook (TestCase ):
112
205
def test (self ):
@@ -189,6 +282,9 @@ def test(self):
189
282
self .assertEqual (0 , book .size_buy ())
190
283
self .assertEqual (1 , book .size ())
191
284
285
+ #
286
+ # MARK: clear
287
+ #
192
288
193
289
class ShouldClearSellLimitOrders (TestCase ):
194
290
def test (self ):
@@ -217,3 +313,32 @@ def test(self):
217
313
self .assertEqual (0 , book .size_sell ())
218
314
self .assertEqual (0 , book .size_buy ())
219
315
self .assertEqual (0 , book .size ())
316
+
317
+
318
+ class ShouldClearBuyLimitOrders (TestCase ):
319
+ def test (self ):
320
+ book = limit_order_book .LimitOrderBook ()
321
+ book .limit_sell (1 , 100 , 50 )
322
+ book .limit_sell (2 , 100 , 50 )
323
+ book .limit_sell (3 , 100 , 50 )
324
+ self .assertTrue (book .has (1 ))
325
+ self .assertTrue (book .has (2 ))
326
+ self .assertTrue (book .has (3 ))
327
+ book .clear ()
328
+ self .assertFalse (book .has (1 ))
329
+ self .assertFalse (book .has (2 ))
330
+ self .assertFalse (book .has (3 ))
331
+ self .assertEqual (0 , book .best_sell ())
332
+ self .assertEqual (0 , book .best_buy ())
333
+ self .assertEqual (0 , book .best (False ))
334
+ self .assertEqual (0 , book .best (True ))
335
+ self .assertEqual (0 , book .volume_sell ())
336
+ self .assertEqual (0 , book .volume_sell (100 ))
337
+ self .assertEqual (0 , book .volume_buy ())
338
+ self .assertEqual (0 , book .volume_buy (100 ))
339
+ self .assertEqual (0 , book .volume ())
340
+ self .assertEqual (0 , book .volume (100 ))
341
+ self .assertEqual (0 , book .size_at (100 ))
342
+ self .assertEqual (0 , book .size_sell ())
343
+ self .assertEqual (0 , book .size_buy ())
344
+ self .assertEqual (0 , book .size ())
0 commit comments