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 DoubleInterpolationTests(int startValue, int endValue, int stepCount, double[] steps) { var result = DoubleInterpolator.Interpolate(stepCount, DefaultEasers.Linear, startValue, endValue); Assert.That(result.Count(), Is.EqualTo(steps.Length)); for (var i = 0; i < result.Count(); i++) { Assert.That(result.ElementAt(i), Is.EqualTo(steps[i]).Within(0.01)); } }
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); }