示例#1
0
        private DistributionRecord GetDistribution(IDataReader reader)
        {
            var record = new DistributionRecord();

            record.Id      = (int)reader["DistributionId"];
            record.Minimum = (double)reader["Minimum"];
            record.Worst   = (double)reader["Worst"];
            record.Likely  = (double)reader["Likely"];
            record.Best    = (double)reader["Best"];
            record.Maximum = (double)reader["Maximum"];
            return(record);
        }
        public void DistributionOnSuccessReturnsCorrectCalculations()
        {
            //arrange
            int    id      = 1;
            double xMin    = 50;
            double xBad    = 85;
            double xLikely = 105;
            double xGood   = 125;
            double xMax    = 150;

            var uniformRandom1 = 3.65182845504721;
            var uniformRandom2 = 12.1312092438079;
            var uniformRandom3 = 66.673560619284;
            var uniformRandom4 = 94.5083821398705;

            var context = new DistributionRecord();

            context.Id      = id;
            context.Minimum = xMin;
            context.Worst   = xBad;
            context.Likely  = xLikely;
            context.Best    = xGood;
            context.Maximum = xMax;

            //act
            var distribution = new Distribution(context);
            var price1       = distribution.GetPrice(uniformRandom1, 0);
            var price2       = distribution.GetPrice(uniformRandom2, 1);
            var price3       = distribution.GetPrice(uniformRandom3, 2);
            var price4       = distribution.GetPrice(uniformRandom4, 3);

            //assert
            Assert.AreEqual(.57, distribution.HeightWorst, .01);
            Assert.AreEqual(.8, distribution.HeightBest, .01);
            Assert.AreEqual(3.31, distribution.HeightLikely, .01);

            Assert.AreEqual(104.97, distribution.Mean, .01);
            Assert.AreEqual(16.2, distribution.Stdev, .01);
            Assert.AreEqual(-.277, distribution.Skew, .01);
            Assert.AreEqual(.537, distribution.Kurt, .01);

            Assert.AreEqual(10, distribution.CdfProbabilities[0], .01);
            Assert.AreEqual(48.86, distribution.CdfProbabilities[1], .01);
            Assert.AreEqual(90, distribution.CdfProbabilities[2], .01);
            Assert.AreEqual(100, distribution.CdfProbabilities[3], .01);

            Assert.AreEqual(71.15062613, price1, .01);
            Assert.AreEqual(87.7933079, price2, .01);
            Assert.AreEqual(111.0757505, price3, .01);
            Assert.AreEqual(131.4736373, price4, .01);
        }
示例#3
0
        public void MapNodeRecordsToNodesOnSuccessMapsProperties()
        {
            //arrange
            var distributionId     = 5;
            var distributionRecord = new DistributionRecord {
                Id = distributionId
            };
            var distributionRecords = new List <DistributionRecord> {
                distributionRecord
            };
            var nodeRecord1 = new NodeRecord
            {
                Id                   = 1,
                Name                 = "name",
                Url                  = "url",
                NetworkName          = "networkname",
                NetworkUrl           = "networkurl",
                InitialPrice         = 2,
                InitialInvestment    = 3,
                IsPortfolioComponent = true,
                Distributions        = distributionRecords
            };

            var nodeRecord2 = new NodeRecord
            {
                Id     = 2,
                Parent = nodeRecord1
            };

            var records = new SortedDictionary <int, NodeRecord>
            {
                { nodeRecord1.Id, nodeRecord1 },
                { nodeRecord2.Id, nodeRecord2 }
            };

            Func <INode> nodeFactory = () =>
            {
                var node = new Mock <INode>();
                node.SetupAllProperties();
                return(node.Object);
            };

            Func <DistributionRecord, IDistribution> distributionFactory = (r) =>
            {
                var distribution = new Mock <IDistribution>();
                distribution.Setup(d => d.Id).Returns(r.Id);
                return(distribution.Object);
            };

            var mapper = new NodeMapper(nodeFactory, distributionFactory, null, null);

            //act
            var result = mapper.MapNodeRecordsToNodes(records);

            //assert
            Assert.AreEqual(nodeRecord1.Id, result[1].Id);
            Assert.AreEqual(nodeRecord1.Name, result[1].Name);
            Assert.AreEqual(nodeRecord1.Url, result[1].Url);
            Assert.AreEqual(nodeRecord1.NetworkName, result[1].NetworkName);
            Assert.AreEqual(nodeRecord1.NetworkUrl, result[1].NetworkUrl);
            Assert.AreEqual(nodeRecord1.InitialPrice, result[1].InitialPrice);
            Assert.AreEqual(nodeRecord1.InitialInvestment, result[1].InitialInvestment);
            Assert.IsTrue(nodeRecord1.IsPortfolioComponent);
            Assert.AreEqual(distributionId, result[1].Distributions[0].Id);
            Assert.AreEqual(nodeRecord1.Id, result[2].Parent.Id);
            Assert.AreEqual(nodeRecord1.Id, result.Values.First().Id);
            Assert.AreEqual(nodeRecord2.Id, result.Values.Last().Id);
        }