Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
def new_order_book() -> OrderBook:
    """
    Common fixture
    Create new order book

    :return: new object of OrderBook
    :rtype: OrderBook
    """
    order_book = OrderBook()

    yield order_book
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
def test_create_book_negative_depth() -> NoReturn:
    """
    Create new order book with negative depth
    """
    with pytest.raises(InvalidDepthException):
        book = OrderBook(-1)
Exemple #8
0
def test_create_book_zero_depth() -> NoReturn:
    """
    Create new order book with zero depth
    """
    with pytest.raises(InvalidDepthException):
        book = OrderBook(0)