コード例 #1
0
        public void ParseStatsResults()
        {
            var parser  = new StatsResponseParser <Product>();
            var xml     = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.responseWithStats.xml");
            var docNode = xml.XPathSelectElement("response/lst[@name='stats']");
            var stats   = parser.ParseStats(docNode, "stats_fields");

            Assert.AreEqual(2, stats.Count);
            Assert.IsTrue(stats.ContainsKey("price"));
            var priceStats = stats["price"];

            Assert.AreEqual(0.0, priceStats.Min);
            Assert.AreEqual(2199.0, priceStats.Max);
            Assert.AreEqual(5251.2699999999995, priceStats.Sum);
            Assert.AreEqual(15, priceStats.Count);
            Assert.AreEqual(11, priceStats.Missing);
            Assert.AreEqual(6038619.160300001, priceStats.SumOfSquares);
            Assert.AreEqual(350.08466666666664, priceStats.Mean);
            Assert.AreEqual(547.737557906113, priceStats.StdDev);
            Assert.AreEqual(1, priceStats.FacetResults.Count);
            Assert.IsTrue(priceStats.FacetResults.ContainsKey("inStock"));
            var priceInStockStats = priceStats.FacetResults["inStock"];

            Assert.AreEqual(2, priceInStockStats.Count);
            Assert.IsTrue(priceInStockStats.ContainsKey("true"));
            Assert.IsTrue(priceInStockStats.ContainsKey("false"));
            var priceInStockFalseStats = priceInStockStats["false"];

            Assert.AreEqual(11.5, priceInStockFalseStats.Min);
            Assert.AreEqual(649.99, priceInStockFalseStats.Max);
            Assert.AreEqual(1161.39, priceInStockFalseStats.Sum);
            Assert.AreEqual(4, priceInStockFalseStats.Count);
            Assert.AreEqual(0, priceInStockFalseStats.Missing);
            Assert.AreEqual(653369.2551, priceInStockFalseStats.SumOfSquares);
            Assert.AreEqual(290.3475, priceInStockFalseStats.Mean);
            Assert.AreEqual(324.63444676281654, priceInStockFalseStats.StdDev);
            var priceInStockTrueStats = priceInStockStats["true"];

            Assert.AreEqual(0.0, priceInStockTrueStats.Min);
            Assert.AreEqual(2199.0, priceInStockTrueStats.Max);
            Assert.AreEqual(4089.879999999999, priceInStockTrueStats.Sum);
            Assert.AreEqual(11, priceInStockTrueStats.Count);
            Assert.AreEqual(0, priceInStockTrueStats.Missing);
            Assert.AreEqual(5385249.905200001, priceInStockTrueStats.SumOfSquares);
            Assert.AreEqual(371.8072727272727, priceInStockTrueStats.Mean);
            Assert.AreEqual(621.6592938755265, priceInStockTrueStats.StdDev);

            var zeroResultsStats = stats["zeroResults"];

            Assert.AreEqual(double.NaN, zeroResultsStats.Min);
            Assert.AreEqual(double.NaN, zeroResultsStats.Max);
            Assert.AreEqual(0, zeroResultsStats.Count);
            Assert.AreEqual(0, zeroResultsStats.Missing);
            Assert.AreEqual(0.0, zeroResultsStats.Sum);
            Assert.AreEqual(0.0, zeroResultsStats.SumOfSquares);
            Assert.AreEqual(double.NaN, zeroResultsStats.Mean);
            Assert.AreEqual(0.0, zeroResultsStats.StdDev);
        }
コード例 #2
0
        public void ParseStatsResults2()
        {
            var xml    = EmbeddedResource.GetEmbeddedXml(GetType(), "Resources.partialResponseWithStats.xml");
            var parser = new StatsResponseParser <Product>();
            var stats  = parser.ParseStats(xml.Root, "stats_fields");

            Assert.IsNotNull(stats);
            Assert.Contains(stats.Keys, "instock_prices");
            Assert.Contains(stats.Keys, "all_prices");

            var instock = stats["instock_prices"];

            Assert.AreEqual(0, instock.Min);
            Assert.AreEqual(2199, instock.Max);
            Assert.AreEqual(16, instock.Count);
            Assert.AreEqual(16, instock.Missing);
            Assert.AreEqual(5251.270030975342, instock.Sum);

            var all = stats["all_prices"];

            Assert.AreEqual(4089.880027770996, all.Sum);
            Assert.AreEqual(2199, all.Max);
        }