Esempio n. 1
0
        public void LinearBucketingRule_ObservesMinimumValue()
        {
            var rule = new LinearBucketingRule(10d, 10d, 50d);

            Assert.IsTrue(rule.IsLow(9d));
            Assert.IsFalse(rule.IsLow(11d));
        }
Esempio n. 2
0
        public void LinearBucketingrule_ObservesMaximumValue()
        {
            var rule = new LinearBucketingRule(10d, 0d, 50d);

            Assert.IsTrue(rule.IsHigh(51d));
            Assert.IsFalse(rule.IsHigh(49d));
        }
Esempio n. 3
0
        public void LinearBucketingRule_DeterminesCorrectValue()
        {
            var rule = new LinearBucketingRule(10d, 0d, 1000d);

            Assert.AreEqual(0d, rule.DetermineValue(0));
            Assert.AreEqual(10d, rule.DetermineValue(1));
            Assert.AreEqual(100d, rule.DetermineValue(10));
        }
Esempio n. 4
0
        public void LinearBucketingRule_DeterminesCorrectBucket()
        {
            var rule = new LinearBucketingRule(10d, 0d, 1000d);

            Assert.AreEqual(0, rule.DetermineBucket(5d));
            Assert.AreEqual(0, rule.DetermineBucket(9d));
            Assert.AreEqual(1, rule.DetermineBucket(10d));
            Assert.AreEqual(125, rule.DetermineBucket(1251d));
        }
Esempio n. 5
0
        public void Histogram_BuildsFromValueList()
        {
            var values = new List<double>() { 1d, 2d, 3d, 4d, 5d };
            var rule = new LinearBucketingRule(1d, 0d, 5d);
            var h = new Histogram(rule);

            h.Build(values);

            Assert.AreEqual(0, h.Buckets[0]);
            Assert.AreEqual(1, h.Buckets[1]);
        }
Esempio n. 6
0
        private static void Display(LinearBucketingRule rule, Histogram histogram, bool cumulative)
        {
            var total = 0;
            Console.WriteLine("Low (< " + rule.Min + ") \t" + histogram.Low);
            for(int i = 0; i < histogram.Buckets.Length; i++)
            {
                total += histogram.Buckets[i];
                if (cumulative)
                {
                    Console.WriteLine(rule.DetermineValue(i) + "\t" + total);
                }
                else
                {
                    Console.WriteLine(rule.DetermineValue(i) + "\t" + histogram.Buckets[i]);
                }

            }
            Console.WriteLine("High (>= " + rule.Max + ") \t" + histogram.High);
            total += histogram.Low + histogram.High;
            Console.WriteLine("Total\t" + total);
        }
Esempio n. 7
0
        public void Histogram_BucketsLowOnBuild()
        {
            var values = new List<double>() { 1d, 2d, 3d, 4d, 5d };
            var rule = new LinearBucketingRule(1d, 2d, 6d);
            var h = new Histogram(rule);

            h.Build(values);

            Assert.AreEqual(1, h.Low);
        }    
Esempio n. 8
0
        public void LinearBucketingRule_CalculatesBucketCount()
        {
            var rule = new LinearBucketingRule(10d, 0d, 100d);

            Assert.AreEqual(10, rule.DetermineBucketCount());
        }
Esempio n. 9
0
        public void SetUp()
        {
            var linearBucketingRule = new LinearBucketingRule(10d, 0d, Double.MaxValue);

            H = new Histogram(linearBucketingRule);
        }
Esempio n. 10
0
        public void LinearBucketingRule_ConfiguresFromValues()
        {
            var values = new List<double>() { 1d, 3.11d, 4.5d, 5.5d, 5.5d, 6d, 6d, 6d };
            var rule = new LinearBucketingRule(values);

            Assert.AreEqual(1d, rule.Min);
            Assert.AreEqual(6.5d, rule.Max);
            Assert.AreEqual(11, rule.DetermineBucketCount());
        }
Esempio n. 11
0
        public void Histogram_BuildsWithHighAndLowBuckets()
        {
            var values = new List<double>() { 1d, 3.11d, 4.5d, 5.5d, 5.5d, 6d, 6d, 6d };
            var rule = new LinearBucketingRule(1d, 2d, 6d);
            var h = new Histogram(rule);

            h.Build(values);

            Assert.AreEqual(1, h.Low);
            Assert.AreEqual(3, h.High);
            Assert.AreEqual(1, h.Buckets[1]);
            Assert.AreEqual(2, h.Buckets[3]);
        }
Esempio n. 12
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("Usage: histo -file=<filename> [-w=<bucket width>] [-l=<low value> -h=<high value>]");
                return;
            }

            var fileName = string.Empty;
            var bucketWidth = 10d;
            var bucketWidthSet = false;
            var low = 0d;
            var lowSet = false;
            var high = 100d;
            var highSet = false;
            var cumulative = false;

            OptionSet p = new OptionSet()
                .Add("file=", f => fileName = f)
                .Add("bucketWidth=|w=", w =>
                                            {
                                                bucketWidth = Convert.ToDouble(w);
                                                bucketWidthSet = true;
                                            })
                .Add("low=|l=", l =>
                                    {
                                        low = Convert.ToDouble(l);
                                        lowSet = true;
                                    })
                .Add("high=|h=", h =>
                                     {
                                         high = Convert.ToDouble(h);
                                         highSet = true;
                                     })
                .Add("cumulative|c", c => { cumulative = true; });
            var unparsed = p.Parse(args);

            Guard.IsLessThan(high, low, "high", "low", "Your low limit must be less than your high limit.");
            if ((lowSet && !highSet) || (highSet && !lowSet))
            {
                throw new ArgumentException("You must set both of low and high if you set one.");
            }

            var loader = new FileDataLoader(fileName);
            var data = loader.Load();
            var rule = new LinearBucketingRule(data);
            if(! lowSet && ! highSet)
            {
                rule = new LinearBucketingRule(bucketWidth, data);
            }
            else if(lowSet && highSet)
            {
                rule = new LinearBucketingRule(bucketWidth, low, high);
            }

            var histo = new Histogram(rule);

            histo.Build(data);

            Display(rule, histo, cumulative);
        }