public void Equals() { var tag1 = new TestObject(1); var tag2 = new TestObject(2); var edge1 = default(SEquatableTaggedEdge <int, TestObject>); var edge2 = new SEquatableTaggedEdge <int, TestObject>(0, 0, null); var edge3 = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); var edge4 = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); var edge5 = new SEquatableTaggedEdge <int, TestObject>(2, 1, null); var edge6 = new SEquatableTaggedEdge <int, TestObject>(1, 2, tag1); var edge7 = new SEquatableTaggedEdge <int, TestObject>(1, 2, tag1); var edge8 = new SEquatableTaggedEdge <int, TestObject>(1, 2, tag2); Assert.AreEqual(edge1, edge1); Assert.AreEqual(edge1, edge2); Assert.AreEqual(edge2, edge1); Assert.IsTrue(edge1.Equals((object)edge2)); Assert.IsTrue(edge1.Equals(edge2)); Assert.IsTrue(edge2.Equals(edge1)); Assert.AreNotEqual(edge1, edge3); Assert.AreNotEqual(edge3, edge1); Assert.IsFalse(edge1.Equals((object)edge3)); Assert.IsFalse(edge1.Equals(edge3)); Assert.IsFalse(edge3.Equals(edge1)); Assert.AreEqual(edge3, edge4); Assert.AreEqual(edge4, edge3); Assert.IsTrue(edge3.Equals((object)edge4)); Assert.IsTrue(edge3.Equals(edge4)); Assert.IsTrue(edge4.Equals(edge3)); Assert.AreNotEqual(edge3, edge5); Assert.AreNotEqual(edge5, edge3); Assert.IsFalse(edge3.Equals((object)edge5)); Assert.IsFalse(edge3.Equals(edge5)); Assert.IsFalse(edge5.Equals(edge3)); Assert.AreEqual(edge3, edge6); // Tag is not taken into account for equality Assert.AreEqual(edge6, edge3); // Tag is not taken into account for equality Assert.IsTrue(edge3.Equals((object)edge6)); // Tag is not taken into account for equality Assert.IsTrue(edge3.Equals(edge6)); // Tag is not taken into account for equality Assert.IsTrue(edge6.Equals(edge3)); // Tag is not taken into account for equality Assert.AreEqual(edge6, edge7); Assert.AreEqual(edge7, edge6); Assert.IsTrue(edge6.Equals((object)edge7)); Assert.IsTrue(edge6.Equals(edge7)); Assert.IsTrue(edge7.Equals(edge6)); Assert.AreEqual(edge6, edge8); // Tag is not taken into account for equality Assert.AreEqual(edge8, edge6); // Tag is not taken into account for equality Assert.IsTrue(edge6.Equals((object)edge8)); // Tag is not taken into account for equality Assert.IsTrue(edge6.Equals(edge8)); // Tag is not taken into account for equality Assert.IsTrue(edge8.Equals(edge6)); // Tag is not taken into account for equality Assert.AreNotEqual(null, edge1); Assert.IsFalse(edge1.Equals(null)); }
public void TagChanged() { var edge = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); int changeCount = 0; edge.TagChanged += (_, _) => ++ changeCount; edge.Tag = null; Assert.AreEqual(0, changeCount); var tag1 = new TestObject(1); edge.Tag = tag1; Assert.AreEqual(1, changeCount); edge.Tag = tag1; Assert.AreEqual(1, changeCount); var tag2 = new TestObject(2); edge.Tag = tag2; Assert.AreEqual(2, changeCount); edge.Tag = tag1; Assert.AreEqual(3, changeCount); }
public void HashcodeDefaultEdge_ReferenceTypeExtremities() { var edge1 = default(SEquatableTaggedEdge <TestVertex, TestObject>); var edge2 = new SEquatableTaggedEdge <TestVertex, TestObject>(); Assert.AreEqual(edge1.GetHashCode(), edge2.GetHashCode()); }
public void ObjectToString() { var edge1 = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); var edge2 = new SEquatableTaggedEdge <int, TestObject>(1, 2, new TestObject(42)); var edge3 = new SEquatableTaggedEdge <int, TestObject>(2, 1, null); Assert.AreEqual("1 -> 2 (no tag)", edge1.ToString()); Assert.AreEqual("1 -> 2 (42)", edge2.ToString()); Assert.AreEqual("2 -> 1 (no tag)", edge3.ToString()); }
public void EqualsDefaultEdge_ReferenceTypeExtremities() { var edge1 = default(SEquatableTaggedEdge <TestVertex, TestObject>); var edge2 = new SEquatableTaggedEdge <TestVertex, TestObject>(); Assert.AreEqual(edge1, edge2); Assert.AreEqual(edge2, edge1); Assert.IsTrue(edge1.Equals(edge2)); Assert.IsTrue(edge2.Equals(edge1)); }
public void Hashcode() { var tag = new TestObject(1); var edge1 = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); var edge2 = new SEquatableTaggedEdge <int, TestObject>(1, 2, null); var edge3 = new SEquatableTaggedEdge <int, TestObject>(2, 1, null); var edge4 = new SEquatableTaggedEdge <int, TestObject>(1, 2, tag); Assert.AreEqual(edge1.GetHashCode(), edge2.GetHashCode()); Assert.AreNotEqual(edge1.GetHashCode(), edge3.GetHashCode()); Assert.AreEqual(edge1.GetHashCode(), edge4.GetHashCode()); // Tag is not taken into account for hashcode }