public void CalculateAverageFillPrice()
        {
            var orderbook = new TestableSymbolOrderBook();

            orderbook.SetData(new List <ISymbolOrderBookEntry>
            {
                new BookEntry {
                    Price = 1, Quantity = 1
                },
                new BookEntry {
                    Price = 1.1m, Quantity = 1
                },
            },
                              new List <ISymbolOrderBookEntry>()
            {
                new BookEntry {
                    Price = 1.2m, Quantity = 1
                },
                new BookEntry {
                    Price = 1.3m, Quantity = 1
                },
            });

            var resultBids  = orderbook.CalculateAverageFillPrice(2, OrderBookEntryType.Bid);
            var resultAsks  = orderbook.CalculateAverageFillPrice(2, OrderBookEntryType.Ask);
            var resultBids2 = orderbook.CalculateAverageFillPrice(1.5m, OrderBookEntryType.Bid);
            var resultAsks2 = orderbook.CalculateAverageFillPrice(1.5m, OrderBookEntryType.Ask);

            Assert.True(resultBids.Success);
            Assert.True(resultAsks.Success);
            Assert.AreEqual(1.05m, resultBids.Data);
            Assert.AreEqual(1.25m, resultAsks.Data);
            Assert.AreEqual(1.06666667m, resultBids2.Data);
            Assert.AreEqual(1.23333333m, resultAsks2.Data);
        }
        public void GivenEmptyAskList_WhenBestAsk_ThenEmptySymbolOrderBookEntry()
        {
            var symbolOrderBook = new TestableSymbolOrderBook();

            Assert.IsNotNull(symbolOrderBook.BestBid);
            Assert.AreEqual(0m, symbolOrderBook.BestBid.Price);
            Assert.AreEqual(0m, symbolOrderBook.BestAsk.Quantity);
        }
        public void GivenEmptyBidAndAskList_WhenBestOffers_ThenEmptySymbolOrderBookEntries()
        {
            var symbolOrderBook = new TestableSymbolOrderBook();

            Assert.IsNotNull(symbolOrderBook.BestOffers);
            Assert.IsNotNull(symbolOrderBook.BestOffers.Bid);
            Assert.IsNotNull(symbolOrderBook.BestOffers.Ask);
            Assert.AreEqual(0m, symbolOrderBook.BestOffers.Bid.Price);
            Assert.AreEqual(0m, symbolOrderBook.BestOffers.Bid.Quantity);
            Assert.AreEqual(0m, symbolOrderBook.BestOffers.Ask.Price);
            Assert.AreEqual(0m, symbolOrderBook.BestOffers.Ask.Quantity);
        }