private static void AssertConsistent(Basis basis, double angle, Dir dir) { var eps = Turn.OneTurnClockwise * 0.00001; Assert.IsTrue(basis.AngleToDir(angle).Equals(dir, eps)); Assert.IsTrue(Dir.FromAngle(angle, basis).Equals(dir, eps)); Assert.AreEqual(basis.DirToUnsignedAngle(dir), angle, 0.00001); Assert.AreEqual(dir.GetUnsignedAngle(basis), angle, 0.00001); var u = Math.Abs(basis.UnitsPerCounterClockwiseTurn); var s = angle * 2 >= u ? angle - u : angle; var r = basis.DirToSignedAngle(dir); Assert.AreEqual(r, dir.GetSignedAngle(basis)); if ((Math.Abs(s - u / 2) > 0.01 || Math.Abs(r + u / 2) > 0.01) && (Math.Abs(s + u / 2) > 0.01 || Math.Abs(r - u / 2) > 0.01)) { Assert.AreEqual(r, s, 0.00001); } }