private static void _PolygonCollionOnAxis( string poly1, int x1, int y1, string poly2, int x2, int y2, int m2x, int m2y, int normalIndex, string expected ) { var p1 = ForName(poly1).Translate(x1, y1); var p2 = ForName(poly2).Translate(x2, y2); var m2 = new Vector(m2x, m2y); var normals = ConvexPolygon.GetUniqueNormals(p1, p2); Vector targetNormal = default; var ix = 0; foreach (var norm in normals) { if (ix == normalIndex) { targetNormal = norm; break; } ix++; } if (ix < normalIndex) { throw new Exception("Couldn't find normal"); } var collisionTime = CollisionDetector.DetermineCollisionTime(p1, p2, m2, targetNormal); var res = collisionTime == null ? "NEVER" : collisionTime.Value.ToString(); Assert.Equal(expected, res); }