void AssertCalculation(PointAnchor anchor1, PointAnchor anchor2, System.Action <float> assertDelegate) { var distance = RawMeasure.GetDistanceBetweenAnchors(anchor1, anchor2); var position1 = anchor1.position; var normal1 = anchor1.normal; var position2 = anchor2.position; var normal2 = anchor2.normal; try { assertDelegate?.Invoke(distance); } catch (AssertionException e) { var msg = e.Message + $"Anchors are:\nposition1:{position1.x}, {position1.y}, {position1.z};\nnormal1:{normal1.x}, {normal1.y}, {normal1.z};" + $"\nposition2:{position2.x}, {position2.y}, {position2.z};\nnormal2:{normal2.x}, {normal2.y}, {normal2.z}"; throw new AssertionException(msg, e); } }
void IsDistancePositive(PointAnchor anchor1, PointAnchor anchor2) { AssertCalculation(anchor1, anchor2, (distance) => Assert.GreaterOrEqual(distance, 0.0f)); }
void IsDistanceEqual(PointAnchor anchor1, PointAnchor anchor2, float expectedDistance) { AssertCalculation(anchor1, anchor2, (distance) => Assert.AreEqual(distance, expectedDistance)); }
void IsDistanceEqualApproximately(PointAnchor anchor1, PointAnchor anchor2, float expectedDistance) { AssertCalculation(anchor1, anchor2, (distance) => Assert.IsTrue(Mathf.Approximately(distance, expectedDistance))); }