def order_book_with_both_offers() -> OrderBook: """ Unit fixture Create new order book and put into new ask and bid offers """ order_book = OrderBook() order_book.asks[0] = {'price': 1, 'quantity': 1} order_book.bids[0] = {'price': 2, 'quantity': 2} order_book.offer_id = 2 yield order_book
def order_book_with_bid_offer() -> OrderBook: """ Unit fixture Create new order book and fill it up with new bid offer :return: new object of OrderBook :rtype: OrderBook """ order_book = OrderBook() order_book.bids[0] = {'price': 1, 'quantity': 1} order_book.offer_id = 1 yield order_book
def test_create_two_books() -> NoReturn: """ Create two different order book at once """ book1 = OrderBook(10) book2 = OrderBook(15) assert book1.depth == 10 assert book2.depth == 15 assert book1.offer_id == 0 assert book2.offer_id == 0 assert not book1.asks assert not book1.bids assert not book2.asks assert not book2.bids
def new_order_book() -> OrderBook: """ Common fixture Create new order book :return: new object of OrderBook :rtype: OrderBook """ order_book = OrderBook() yield order_book
def test_create_custom_book() -> NoReturn: """ Create new order book with custom depth param """ book_size = randint(1, 10) book = OrderBook(book_size) assert book.depth == book_size assert book.offer_id == 0 assert not book.asks assert not book.bids
def test_overflow_bids_market_custom_depth() -> NoReturn: """ Try to add one more lot when custom bids market is overflowed """ book = OrderBook(10) for _ in range(book.depth): book.add_offer('bids', 1, 1) assert book.depth == len(book.bids) assert not book.asks # try to put 11th lot into bids with pytest.raises(TradeTypeOverflowedException): book.add_offer('bids', 1, 1)
def test_create_book_negative_depth() -> NoReturn: """ Create new order book with negative depth """ with pytest.raises(InvalidDepthException): book = OrderBook(-1)
def test_create_book_zero_depth() -> NoReturn: """ Create new order book with zero depth """ with pytest.raises(InvalidDepthException): book = OrderBook(0)