private static void AssertConversionPreservesOriginalValue <T>(double originalValue, double within = 0) { NumericConversion.DoubleToGeneric(originalValue, out T genericValue); double finalValue = NumericConversion.GenericToDouble(ref genericValue); Assert.That(finalValue, Is.EqualTo(originalValue).Within(within), $"Type: {typeof(T)}"); }
public void Test_TypeSpecificFunction_Subtract() { Assert.That(NumericConversion.CreateSubtractFunction <double>().Invoke(111, 69), Is.EqualTo(42)); Assert.That(NumericConversion.CreateSubtractFunction <float>().Invoke(111, 69), Is.EqualTo(42)); Assert.That(NumericConversion.CreateSubtractFunction <int>().Invoke(111, 69), Is.EqualTo(42)); Assert.That(NumericConversion.CreateSubtractFunction <byte>().Invoke(111, 69), Is.EqualTo(42)); }
public void Test_TypeSpecificFunction_Add() { Assert.That(NumericConversion.CreateAddFunction <double>().Invoke(42, 69), Is.EqualTo(111)); Assert.That(NumericConversion.CreateAddFunction <float>().Invoke(42, 69), Is.EqualTo(111)); Assert.That(NumericConversion.CreateAddFunction <int>().Invoke(42, 69), Is.EqualTo(111)); Assert.That(NumericConversion.CreateAddFunction <byte>().Invoke(42, 69), Is.EqualTo(111)); }
/// <summary> /// Sets conversions of axis - functions used to convert values of axis type to and from double values of viewport. /// Sets both ConvertToDouble and ConvertFromDouble properties. /// </summary> /// <param name="min">The minimal viewport value.</param> /// <param name="minValue">The value of axis type, corresponding to minimal viewport value.</param> /// <param name="max">The maximal viewport value.</param> /// <param name="maxValue">The value of axis type, corresponding to maximal viewport value.</param> public override void SetConversion(double min, double minValue, double max, double maxValue) { var conversion = new NumericConversion(min, minValue, max, maxValue); this.ConvertFromDouble = conversion.FromDouble; this.ConvertToDouble = conversion.ToDouble; }
public bool IsUnderMouse(double coordinateX, double coordinateY, double snapX, double snapY) { for (int i = 0; i < Count; i++) { double dX = Math.Abs(NumericConversion.GenericToDouble(Xs, i) - coordinateX); double dY = Math.Abs(NumericConversion.GenericToDouble(Ys, i) - coordinateY); if (dX <= snapX && dY <= snapY) { IndexUnderMouse = i; return(true); } } IndexUnderMouse = -1; return(false); }
public void Test_TypeSpecificFunction_LessThanOrEqual() { Assert.That(NumericConversion.CreateLessThanOrEqualFunction <double>().Invoke(111, 69), Is.False); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <double>().Invoke(69, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <double>().Invoke(42, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <float>().Invoke(111, 69), Is.False); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <float>().Invoke(69, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <float>().Invoke(42, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <int>().Invoke(111, 69), Is.False); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <int>().Invoke(69, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <int>().Invoke(42, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <byte>().Invoke(111, 69), Is.False); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <byte>().Invoke(69, 69), Is.True); Assert.That(NumericConversion.CreateLessThanOrEqualFunction <byte>().Invoke(42, 69), Is.True); }