Beispiel #1
0
def utest_Book():    
    print '-- Book --',
    bo, ao = createOrders()
    b = Book()
    assert b.isEmpty()         == True,  "Book not empty!" 
    assert b.isPresent(999)    == False, "Order found in an empty book!"
        
    b.addOrder( order=bo )
    assert b.isBidEmpty()      == False, "Bid level is empty!" 
    assert b.isAskEmpty()      == True,  "Ask level not empty!"
    assert b.isEmpty()         == False, "Book is empty!" 
    assert b.isPresent(999)    == True,  "Order '999' not present!"

    b.addOrder( order=ao )
    assert b.isBidEmpty()      == False, "Bid level is empty!" 
    assert b.isAskEmpty()      == False, "Ask level is empty!"
    assert b.isEmpty()         == False, "Book is empty!" 
    assert b.isPresent(9191)   == True,  "Order '9191' not present!"
    
    assert b.removeOrder(999)  == True,  "Removing order '999' failed!"
    assert b.isBidEmpty()      == False, "Bid level is empty!" 
    assert b.isAskEmpty()      == False, "Ask level is empty!"
    assert b.isEmpty()         == False, "Book is empty!" 
        
    b.removeEmptyLevels()
    assert b.isBidEmpty()      == True,  "Bid level not empty!" 
    assert b.isAskEmpty()      == False, "Asklevel is empty!"
    assert b.isEmpty()         == False, "Book is empty!" 

    assert b.removeOrder(9191) == True,  "Removing order '9191' failed!"
    assert b.isBidEmpty()      == True,  "Bid level not empty!" 
    assert b.isAskEmpty()      == False, "Ask level is empty!"
    assert b.isEmpty()         == True,  "Book not empty!" 
    
    b.removeEmptyLevels()
    assert b.isBidEmpty()      == True,  "Bid level not empty!" 
    assert b.isAskEmpty()      == True,  "Ask levle not empty!"
    
    b.addOrder( order=bo )
    b.addOrder( order=ao )

    b.addOrder(BID, 199, 54.12, 1000, 100) # iceberg
    b.addOrder(BID, 111, 54.12,  100, 100)
    
    assert len(b.bid) == 2, "Wrong number of bid level! Expected: 2"
    
    prev_price = 1000*100
    for lprice, level in b.bid.iteritems():
        assert lprice < prev_price, "Order of levels not monotonically decending in price"
        prev_price = lprice

    b.addOrder(ASK, 191,  45.23,  100, 100)
    b.addOrder(ASK, 777,  32.54,  100, 100)
    b.addOrder(ASK, 991,  22.21,  100, 100)
    b.addOrder(ASK, 181, 222.22,  100, 100)
    b.addOrder(ASK, 888,  32.54,  100, 100)
    b.addOrder(ASK,  33,  25.18,  100, 100)
    b.addOrder(ASK, 111,  25.18,  100, 100)

    assert len(b.ask) == 5, "Wrong number of ask level! Expected: 5"

    prev_price = 0*100
    for lprice, level in b.ask.iteritems():
        assert lprice > prev_price, "Order of levels not monotonically increasing in price"
        prev_price = lprice
    
    b.clear()
    assert b.isEmpty() == True, "Book not empty!" 

    print 'OK'