Ejemplo n.º 1
0
        public virtual void DataMaximumMinimumTests()
        {
            const double DataBorder = 100;

            // DataMinimum == DataMaximum
            DoubleInterpolator doubleInterpolator = new DoubleInterpolator
            {
                DataMaximum = DataBorder,
                DataMinimum = DataBorder,
                From        = 0,
                To          = 0.1,
            };

            Assert.AreEqual(doubleInterpolator.From, (double)doubleInterpolator.Interpolate(0.001), Delta);
            Assert.AreEqual(doubleInterpolator.From, (double)doubleInterpolator.Interpolate(0), Delta);

            // Calculate minimum double value that (dataBorder - value) yields
            // a different number
            double minDoubleDiff = 1;

            while ((DataBorder - (minDoubleDiff / 2)) != DataBorder)
            {
                minDoubleDiff /= 2;
            }

            // No exception (div by 0) for very close values
            doubleInterpolator.DataMinimum = DataBorder - minDoubleDiff;
            doubleInterpolator.Interpolate(0.01);
            doubleInterpolator.DataMinimum = DataBorder - (minDoubleDiff / 2);
            doubleInterpolator.Interpolate(0.01);
        }
Ejemplo n.º 2
0
        public void InterpolatorsMinMaxBindingTreeMapTest()
        {
            DoubleInterpolator testInterpolator = new DoubleInterpolator
            {
                From             = 11,
                To               = 20,
                DataRangeBinding = new Binding("Points"),
                TargetName       = "textB",
                TargetProperty   = "FontSize"
            };

            testInterpolator.SetBinding(DoubleInterpolator.DataMinimumProperty, new Binding("Key"));
            testInterpolator.SetBinding(DoubleInterpolator.DataMaximumProperty, new Binding("Value"));

            TreeMap testTreeMap = InterpolatedTreeMapToTest;

            testTreeMap.Interpolators.Clear();

            // Tuple can't be used as it is internal
            testTreeMap.DataContext = new KeyValuePair <double, double>(15.0, 20.0);

            testTreeMap.Interpolators.Add(testInterpolator);

            TestAsync(
                testTreeMap,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(20, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(15, testInterpolator.ActualDataMinimum));
        }
Ejemplo n.º 3
0
        public void FixedMinMaxTreeMapTest()
        {
            TreeMap testTreeMap = InterpolatedTreeMapToTest;

            testTreeMap.Interpolators.Clear();
            DoubleInterpolator testInterpolator = new DoubleInterpolator
            {
                From             = 11,
                To               = 20,
                DataRangeBinding = new Binding("Points"),
                TargetName       = "textB",
                TargetProperty   = "FontSize"
            };

            testTreeMap.Interpolators.Add(testInterpolator);
            testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource;

            TestAsync(
                testTreeMap,
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                // Max set
                () => testInterpolator.DataMaximum = 100,
                () => testTreeMap.ItemsSource      = null,
                () => testTreeMap.ItemsSource      = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(100, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                // Min set
                () => testInterpolator.DataMinimum = 0,
                () => testInterpolator.DataMaximum = Double.NaN,
                () => testTreeMap.ItemsSource      = null,
                () => testTreeMap.ItemsSource      = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(0, testInterpolator.ActualDataMinimum),
                // Min & Max set
                () => testInterpolator.DataMinimum = 0,
                () => testInterpolator.DataMaximum = 100,
                () => testTreeMap.ItemsSource      = null,
                () => testTreeMap.ItemsSource      = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(100, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(0, testInterpolator.ActualDataMinimum),
                // Double ItemsSource set, Min & Max in the middle of the range
                () => testInterpolator.DataMinimum = 15,
                () => testInterpolator.DataMaximum = 30,
                () => testTreeMap.ItemsSource      = null,
                () => testTreeMap.ItemsSource      = InterpolatedTreeMapItemsSource,
                () => testTreeMap.ItemsSource      = null,
                () => testTreeMap.ItemsSource      = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(30, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(15, testInterpolator.ActualDataMinimum));
        }
Ejemplo n.º 4
0
        public void InterpolatorsModeTreeMapTest()
        {
            TreeMap testTreeMap = InterpolatedTreeMapToTest;

            testTreeMap.Interpolators.Clear();
            DoubleInterpolator testInterpolator = new DoubleInterpolator
            {
                From             = 0.2,
                To               = 0.5,
                DataRangeBinding = new Binding("Points"),
                TargetName       = "itemBorder",
                TargetProperty   = "Opacity"
            };

            testTreeMap.Interpolators.Add(testInterpolator);
            // We do not aggregate for interpolators as properties can be non additive
            InterpolatedTreeMapItemsSource[1].Points = 80;
            testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource;

            TestAsync(
                testTreeMap,
                // Check LeafNodesOnly behavior by default
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                () => Assert.AreEqual(0.2, FindElementWithTag(testTreeMap, "A").Opacity, Epsilon),
                () => Assert.AreEqual(1, FindElementWithTag(testTreeMap, "B").Opacity, Epsilon),
                () => Assert.AreEqual(0.5, FindElementWithTag(testTreeMap, "C").Opacity, Epsilon),
                () => Assert.AreEqual(0.3, FindElementWithTag(testTreeMap, "D").Opacity, Epsilon),
                // Check AllNodes calculations
                () => testInterpolator.InterpolationMode = InterpolationMode.AllNodes,
                () => testInterpolator.To     = 0.8,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(80, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                () => Assert.AreEqual(0.2, FindElementWithTag(testTreeMap, "A").Opacity, Epsilon),
                () => Assert.AreEqual(0.8, FindElementWithTag(testTreeMap, "B").Opacity, Epsilon),
                () => Assert.AreEqual(0.5, FindElementWithTag(testTreeMap, "C").Opacity, Epsilon),
                () => Assert.AreEqual(0.3, FindElementWithTag(testTreeMap, "D").Opacity, Epsilon));
        }
Ejemplo n.º 5
0
        public virtual void BasicTests()
        {
            DoubleInterpolator doubleInterpolator = new DoubleInterpolator
            {
                DataMaximum = 100,
                DataMinimum = 0,
                From        = 0,
                To          = 0.1,
            };

            // Regular tests
            Assert.AreEqual(0.001, (double)doubleInterpolator.Interpolate(1), Delta);
            Assert.AreEqual(0, (double)doubleInterpolator.Interpolate(0), Delta);
            Assert.AreEqual(0.1, (double)doubleInterpolator.Interpolate(100), Delta);

            // We aggregate values in leaves nodes so parent nodes will have
            // values > DataMaximum.
            Assert.AreEqual(1, (double)doubleInterpolator.Interpolate(1000), Delta);

            // As we're allowing DataMinimum > DataMaximum behavior, input value
            // < DataMinimum is OK
            Assert.AreEqual(-1, (double)doubleInterpolator.Interpolate(-1000), Delta);

            // As above test but now we widening the range
            doubleInterpolator = new DoubleInterpolator
            {
                DataMaximum = 0.1,
                DataMinimum = 0,
                From        = 0,
                To          = 100,
            };

            // Regular tests
            Assert.AreEqual(1, (double)doubleInterpolator.Interpolate(0.001), Delta);
            Assert.AreEqual(0, (double)doubleInterpolator.Interpolate(0), Delta);
            Assert.AreEqual(100, (double)doubleInterpolator.Interpolate(0.1), Delta);
            Assert.AreEqual(1000, (double)doubleInterpolator.Interpolate(1), Delta);
            Assert.AreEqual(-1000, (double)doubleInterpolator.Interpolate(-1), Delta);
        }
        public virtual void BasicTests()
        {
            DoubleInterpolator doubleInterpolator = new DoubleInterpolator
                                                        {
                                                            DataMaximum = 100,
                                                            DataMinimum = 0,
                                                            From = 0,
                                                            To = 0.1,
                                                        };

            // Regular tests
            Assert.AreEqual(0.001, (double)doubleInterpolator.Interpolate(1), Delta);
            Assert.AreEqual(0, (double)doubleInterpolator.Interpolate(0), Delta);
            Assert.AreEqual(0.1, (double)doubleInterpolator.Interpolate(100), Delta);

            // We aggregate values in leaves nodes so parent nodes will have 
            // values > DataMaximum.
            Assert.AreEqual(1, (double)doubleInterpolator.Interpolate(1000), Delta);

            // As we're allowing DataMinimum > DataMaximum behavior, input value
            // < DataMinimum is OK
            Assert.AreEqual(-1, (double)doubleInterpolator.Interpolate(-1000), Delta);

            // As above test but now we widening the range
            doubleInterpolator = new DoubleInterpolator
                                     {
                DataMaximum = 0.1,
                DataMinimum = 0,
                From = 0,
                To = 100,
            };
            
            // Regular tests
            Assert.AreEqual(1, (double)doubleInterpolator.Interpolate(0.001), Delta);
            Assert.AreEqual(0, (double)doubleInterpolator.Interpolate(0), Delta);
            Assert.AreEqual(100, (double)doubleInterpolator.Interpolate(0.1), Delta);
            Assert.AreEqual(1000, (double)doubleInterpolator.Interpolate(1), Delta);
            Assert.AreEqual(-1000, (double)doubleInterpolator.Interpolate(-1), Delta);
        }
Ejemplo n.º 7
0
        public void InterpolatorsMinMaxBindingTreeMapTest()
        {
            DoubleInterpolator testInterpolator = new DoubleInterpolator
            {
                From = 11,
                To = 20,
                DataRangeBinding = new Binding("Points"),
                TargetName = "textB",
                TargetProperty = "FontSize"
            };

            testInterpolator.SetBinding(DoubleInterpolator.DataMinimumProperty, new Binding("Key"));
            testInterpolator.SetBinding(DoubleInterpolator.DataMaximumProperty, new Binding("Value"));

            TreeMap testTreeMap = InterpolatedTreeMapToTest;

            testTreeMap.Interpolators.Clear();

            // Tuple can't be used as it is internal
            testTreeMap.DataContext = new KeyValuePair<double, double>(15.0, 20.0);

            testTreeMap.Interpolators.Add(testInterpolator);

            TestAsync(
            testTreeMap,
            () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
            () => Assert.AreEqual(20, testInterpolator.ActualDataMaximum),
            () => Assert.AreEqual(15, testInterpolator.ActualDataMinimum));
        }
Ejemplo n.º 8
0
        public void InterpolatorsModeTreeMapTest()
        {
            TreeMap testTreeMap = InterpolatedTreeMapToTest;
            testTreeMap.Interpolators.Clear();
            DoubleInterpolator testInterpolator = new DoubleInterpolator
                                                      {
                                                          From = 0.2,
                                                          To = 0.5,
                                                          DataRangeBinding = new Binding("Points"),
                                                          TargetName = "itemBorder",
                                                          TargetProperty = "Opacity"
                                                      };
            testTreeMap.Interpolators.Add(testInterpolator);
            // We do not aggregate for interpolators as properties can be non additive
            InterpolatedTreeMapItemsSource[1].Points = 80;
            testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource;

            TestAsync(
                testTreeMap,
                // Check LeafNodesOnly behavior by default
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                () => Assert.AreEqual(0.2, FindElementWithTag(testTreeMap, "A").Opacity, Epsilon),
                () => Assert.AreEqual(1, FindElementWithTag(testTreeMap, "B").Opacity, Epsilon),
                () => Assert.AreEqual(0.5, FindElementWithTag(testTreeMap, "C").Opacity, Epsilon),
                () => Assert.AreEqual(0.3, FindElementWithTag(testTreeMap, "D").Opacity, Epsilon),
                // Check AllNodes calculations
                () => testInterpolator.InterpolationMode = InterpolationMode.AllNodes,
                () => testInterpolator.To = 0.8,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(80, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                () => Assert.AreEqual(0.2, FindElementWithTag(testTreeMap, "A").Opacity, Epsilon),
                () => Assert.AreEqual(0.8, FindElementWithTag(testTreeMap, "B").Opacity, Epsilon),
                () => Assert.AreEqual(0.5, FindElementWithTag(testTreeMap, "C").Opacity, Epsilon),
                () => Assert.AreEqual(0.3, FindElementWithTag(testTreeMap, "D").Opacity, Epsilon));
        }
Ejemplo n.º 9
0
        public void FixedMinMaxTreeMapTest()
        {
            TreeMap testTreeMap = InterpolatedTreeMapToTest;
            testTreeMap.Interpolators.Clear();
            DoubleInterpolator testInterpolator = new DoubleInterpolator
                                                      {
                                                          From = 11,
                                                          To = 20,
                                                          DataRangeBinding = new Binding("Points"),
                                                          TargetName = "textB",
                                                          TargetProperty = "FontSize"
                                                      };
            testTreeMap.Interpolators.Add(testInterpolator);
            testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource;

            TestAsync(
                testTreeMap,
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                // Max set
                () => testInterpolator.DataMaximum = 100,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(100, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(20, testInterpolator.ActualDataMinimum),
                // Min set
                () => testInterpolator.DataMinimum = 0,
                () => testInterpolator.DataMaximum = Double.NaN,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(50, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(0, testInterpolator.ActualDataMinimum),
                // Min & Max set
                () => testInterpolator.DataMinimum = 0,
                () => testInterpolator.DataMaximum = 100,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(100, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(0, testInterpolator.ActualDataMinimum),
                // Double ItemsSource set, Min & Max in the middle of the range
                () => testInterpolator.DataMinimum = 15,
                () => testInterpolator.DataMaximum = 30,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => testTreeMap.ItemsSource = null,
                () => testTreeMap.ItemsSource = InterpolatedTreeMapItemsSource,
                () => Assert.AreEqual(30, testInterpolator.ActualDataMaximum),
                () => Assert.AreEqual(15, testInterpolator.ActualDataMinimum));
        }
        public virtual void DataMaximumMinimumTests()
        {
            const double DataBorder = 100;

            // DataMinimum == DataMaximum
            DoubleInterpolator doubleInterpolator = new DoubleInterpolator
                                                        {
                DataMaximum = DataBorder,
                DataMinimum = DataBorder,
                From = 0,
                To = 0.1,
            };

            Assert.AreEqual(doubleInterpolator.From, (double)doubleInterpolator.Interpolate(0.001), Delta);
            Assert.AreEqual(doubleInterpolator.From, (double)doubleInterpolator.Interpolate(0), Delta);

            // Calculate minimum double value that (dataBorder - value) yields 
            // a different number
            double minDoubleDiff = 1;
            while ((DataBorder - (minDoubleDiff / 2)) != DataBorder)
            {
                minDoubleDiff /= 2;
            }

            // No exception (div by 0) for very close values 
            doubleInterpolator.DataMinimum = DataBorder - minDoubleDiff;
            doubleInterpolator.Interpolate(0.01);
            doubleInterpolator.DataMinimum = DataBorder - (minDoubleDiff / 2);
            doubleInterpolator.Interpolate(0.01);
         }