public void MapPortfolioToViewModelOnSuccessReturnsProperties() { //arrange var mean = 1D; var statistic = new Mock <IStatistic>(); statistic.Setup(s => s.Mean).Returns(mean); var frequency = 2D; var histogramDatum = new HistogramDatum { Frequency = frequency }; IList <HistogramDatum> histogram = new[] { histogramDatum }; var successProbability = 3D; IList <double> successProbabilities = new[] { successProbability }; var portfolio = new Mock <IPortfolio>(); portfolio.Setup(p => p.Statistics).Returns(statistic.Object); portfolio.Setup(p => p.Histogram).Returns(histogram); portfolio.Setup(p => p.SuccessProbabilities).Returns(successProbabilities); var statisticsViewModel = new StatisticViewModel { Mean = mean }; var statisticMapper = new Mock <IStatisticMapper>(); statisticMapper.Setup(m => m.MapStatisticToViewModel( It.Is <IStatistic>(s => s.Mean == mean))) .Returns(statisticsViewModel); var mapper = new PortfolioMapper(statisticMapper.Object); //act var result = mapper.MapPortfolioToViewModel(portfolio.Object); //assert Assert.AreEqual(mean, result.Statistics.Mean); Assert.AreEqual(frequency, result.Histogram[0].Frequency); Assert.AreEqual(successProbability, result.SuccessProbabilities[0]); }
public void HistogramOnSuccessReturnsHistogramData() { //arrange var interval = 1; var datum = new HistogramDatum { Interval = interval }; var data = new[] { datum }; double price = 2; var simulations = new[] { price }; var minimum = 3; var maximum = 4; var distribution = new Mock <IDistribution>(); distribution.Setup(d => d.Minimum).Returns(minimum); distribution.Setup(d => d.Maximum).Returns(maximum); var distributions = new[] { distribution.Object }; var histogram = new Mock <IHistogram>(); histogram.Setup(h => h.GetHistogramData( It.Is <HistogramContext>(c => c.GlobalXMin == minimum && c.GlobalXMax == maximum && c.Simulations[0] == price), It.IsAny <int>())) .Returns(data); var node = new Node(null, histogram.Object); node.Simulations = simulations; node.Distributions = distributions; //act var result = node.Histogram; //assert Assert.AreEqual(interval, result[0].Interval); }
public void InitOnSuccessReturnsCorrectProbabilities() { //arrange int expectedPortfolioSimulation = 10; // int avoids floating point errors var simulation = 110D; var simulations = new[] { simulation }; var nodeInitialInvestment = 1000D; var nodeInitialPrice = 100D; var node = new Mock <INode>(); node.Setup(n => n.InitialInvestment).Returns(nodeInitialInvestment); node.Setup(n => n.InitialPrice).Returns(nodeInitialPrice); node.Setup(n => n.Simulations).Returns(simulations); node.Setup(n => n.PortfolioWeight).Returns(1); var nodes = new[] { node.Object }; var cashFlowId = 1; var cashFlow = new CashFlow { Id = cashFlowId }; var cashFlows = new[] { cashFlow }; var successProbability = .5D; var successProbabilities = new[] { successProbability }; var portfolioSimulator = new Mock <IPortfolioSimulator>(); portfolioSimulator.Setup(ps => ps.CalculateSuccessProbabilities( It.Is <IList <INode> >(n => n[0].InitialInvestment == nodeInitialInvestment), It.Is <IList <CashFlow> >(cf => cf[0].Id == cashFlowId))) .Returns(successProbabilities); var statistics = new Mock <IStatistic>(); var interval = 3D; var histogramDatum = new HistogramDatum { Interval = interval }; var histogramData = new[] { histogramDatum }; var histogram = new Mock <IHistogram>(); histogram.Setup(h => h.GetHistogramData( It.Is <HistogramContext>( ctx => (int)ctx.Simulations[0] == expectedPortfolioSimulation && (int)ctx.GlobalXMin == expectedPortfolioSimulation && (int)ctx.GlobalXMax == expectedPortfolioSimulation), It.IsAny <int>())) .Returns(histogramData); var portfolio = new Portfolio(statistics.Object, histogram.Object, portfolioSimulator.Object); //act portfolio.Init(nodes, cashFlows); var initialValueResult = portfolio.InitialValue; var statisticsResult = portfolio.Statistics; var histogramResult = portfolio.Histogram; var successProbabilitiesResult = portfolio.SuccessProbabilities; //assert Assert.AreEqual(nodeInitialInvestment, initialValueResult); Assert.AreSame(statistics.Object, statisticsResult); statistics.Verify(s => s.Init( It.Is <IList <double> >(sim => (int)sim[0] == expectedPortfolioSimulation) )); Assert.AreEqual(interval, histogramResult[0].Interval); Assert.AreEqual(successProbability, successProbabilitiesResult[0]); }