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); }
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)); }
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 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)); }
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); }
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)); }
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)); }
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); }