public void XYTupleEquality() { var c1 = new XYTuple(1, 1); var c2 = new XYTuple { X = 1, Y = 1 }; Assert.True(c1 == c2); Assert.True((c1 as object).Equals(c2)); var c3 = new XYTuple { X = 2, Y = 2 }; Assert.True(c1 != c3); Assert.False((c1 as object).Equals(c3)); }
public void XYTupleHashing() { var c1 = new XYTuple { X = 1, Y = 1 }; var c2 = new XYTuple { X = 1, Y = 1 }; Assert.True(c1.GetHashCode() == c2.GetHashCode()); var c3 = new XYTuple { X = 2, Y = 2 }; Assert.True(c2.GetHashCode() != c3.GetHashCode()); }
private void DrawTargetContacts(CanvasDrawingSession ds) { const float Z = 0; const float E = EditMargin + EditSize + EditMargin; var cp = Center; CheckContacts(); var N = _contactTargets.Count; _targetPoints.Clear(); for (int i = 0; i < N; i++) { var(cont, targ, point, size) = _contactTargets[i]; var p = point * EditScale; var c = Center + p; _targetPoints.Add(c); ds.DrawCircle(c, 8, Colors.Cyan, 5); #region DrawSimulatedEdge ==================================== switch (targ) { case Target.N: ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3); break; case Target.S: ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3); break; case Target.E: ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3); break; case Target.W: ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3); break; case Target.NE: ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3); break; case Target.NW: ds.DrawLine(c.X, c.Y, c.X, Z, Colors.Cyan, 3); break; case Target.SE: ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3); break; case Target.SW: ds.DrawLine(c.X, c.Y, c.X, E, Colors.Cyan, 3); break; case Target.EN: ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3); break; case Target.ES: ds.DrawLine(c.X, c.Y, E, c.Y, Colors.Cyan, 3); break; case Target.WN: ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3); break; case Target.WS: ds.DrawLine(c.X, c.Y, Z, c.Y, Colors.Cyan, 3); break; case Target.NEC: ds.DrawLine(c.X, c.Y, E, Z, Colors.Cyan, 3); break; case Target.NWC: ds.DrawLine(c.X, c.Y, Z, Z, Colors.Cyan, 3); break; case Target.SEC: ds.DrawLine(c.X, c.Y, E, E, Colors.Cyan, 3); break; case Target.SWC: ds.DrawLine(c.X, c.Y, Z, E, Colors.Cyan, 3); break; } #endregion if (cont == Contact.Any && size > 0) { var(p1, p2) = XYTuple.GetScaledNormal(targ, point, size, Center, EditScale); ds.DrawLine(p1, p2, Color.FromArgb(0x80, 0xFF, 0, 0), 20); } } }