public override bool Evaluate() { if (m_comparer == null) { if (_comparerType != null && _comparerType.IsValid) { m_comparer = (FloatComparer)System.Activator.CreateInstance(_comparerType.Type); } else { throw new System.NullReferenceException("Null comparer"); } } GameObject a = _providerA.GetValue(); GameObject b = _providerB.GetValue(); if (a == null || b == null) { return(false); } float relative = Vector3.Distance(a.transform.position, b.transform.position); return(m_comparer.Compare(relative, _distance.GetValue())); }
public void TestInvalidTolerance() { AssertException <ArgumentOutOfRangeException>(() => FloatComparer.Compare(0f, 0f, -1)); AssertException <ArgumentOutOfRangeException>(() => FloatComparer.Compare(0f, 0f, 4 * 1024 * 1024)); AssertException <ArgumentOutOfRangeException>(() => FloatComparer.Compare(0.0, 0.0, -1L)); AssertException <ArgumentOutOfRangeException>(() => FloatComparer.Compare(0.0, 0.0, 2L * 1024 * 1024 * 1024 * 1024 * 1024)); }
private static void AssertDoublePrecisionCompare(CompareResult expectedResult, long?expectedDifference, double x, double y, long tolerance) { long actualDifference; var actualResult = FloatComparer.Compare(x, y, tolerance, out actualDifference); Assert.AreEqual((int)expectedResult, actualResult, "Comparing {0:r} with {1:r} (\u00B1 {2} ULPs) [result]", x, y, tolerance); if (expectedDifference.HasValue) { Assert.AreEqual(expectedDifference.Value, actualDifference, "Comparing {0:r} with {1:r} (\u00B1 {2} ULPs) [\u0394ULPs]", x, y, tolerance); } }
private static void AssertDoublePrecisionConsistency(CompareResult expectedResult, double x, double y, string message, params object[] args) { var expectedAreEqual = expectedResult == CompareResult.AreEqual; var expectedIsGreaterThan = expectedResult == CompareResult.GreaterThan; var expectedIsLessThan = expectedResult == CompareResult.LessThan; var actualResult = FloatComparer.Compare(x, y, 100); var actualAreEqual = FloatComparer.AreEqual(x, y); var actualIsGreaterThan = FloatComparer.IsGreaterThan(x, y); var actualIsLessThan = FloatComparer.IsLessThan(x, y); Assert.AreEqual((int)expectedResult, actualResult, message + " [Compare/double]", args); Assert.AreEqual(expectedAreEqual, actualAreEqual, message + " [AreEqual/double]", args); Assert.AreEqual(expectedIsGreaterThan, actualIsGreaterThan, message + " [IsGreaterThan/double]", args); Assert.AreEqual(expectedIsLessThan, actualIsLessThan, message + " [IsLessThan/double]", args); }
public override bool Evaluate() { if (m_comparer == null) { if (_comparerType != null && _comparerType.IsValid) { m_comparer = (FloatComparer)System.Activator.CreateInstance(_comparerType.Type); } else { throw new System.NullReferenceException("Null comparer"); } } return(m_comparer.Compare(_providerA.GetValue(), _providerB.GetValue())); }