Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        public void HashcodeDefaultEdge_ReferenceTypeExtremities()
        {
            var edge1 = default(SEquatableTaggedEdge <TestVertex, TestObject>);
            var edge2 = new SEquatableTaggedEdge <TestVertex, TestObject>();

            Assert.AreEqual(edge1.GetHashCode(), edge2.GetHashCode());
        }
Пример #4
0
        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());
        }
Пример #5
0
        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));
        }
Пример #6
0
        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
        }