public void CalculateVolumeWeightedStockPriceTest() { var stock = new CommonStock { symbol = "TEA", lastDividend = 10, parValue = 100 }; var trade1 = new Trade { stockSymbol = "TEA", timestamp = DateTime.Now.AddMinutes(-60), price = 5, direction = TradeDirection.BUY, quantity = 50 }; exchangeStock.RecordTrade(trade1); var trade2 = new Trade { stockSymbol = "TEA", timestamp = DateTime.Now, price = 10, direction = TradeDirection.BUY, quantity = 100 }; exchangeStock.RecordTrade(trade2); var trade3 = new Trade { stockSymbol = "TEA", timestamp = DateTime.Now, price = 100, direction = TradeDirection.BUY, quantity = 3 }; exchangeStock.RecordTrade(trade3); var currentStockPrice = exchangeStock.CalculateVolumeWeightedStockPrice("TEA", 15); var expectedStockPrice = 1300d / 103d; Assert.AreEqual(expectedStockPrice, currentStockPrice); }