public void TreeEqualityComparer_Generic_Nulls()
        {
            var eq = new TreeEqualityComparer <int>();

            var t = new Tree <int>(42);

            Assert.IsTrue(eq.Equals(null, null));
            Assert.IsFalse(eq.Equals(t, null));
            Assert.IsFalse(eq.Equals(null, t));

            Assert.AreNotEqual(0, eq.GetHashCode(null));
        }
Exemplo n.º 2
0
        public void Tree_Accept_Simple()
        {
            var tree = new Tree <int>(1, new Tree <int>(3), new Tree <int>(4), new Tree <int>(5));

            var res1 = tree.Accept(new MyVisitor1());
            var res2 = ((ITree)tree).Accept(new MyVisitor2());

            var expected = new Tree <int>(1, new Tree <int>(3), new Tree <int>(2), new Tree <int>(5));

            var eq1 = new TreeEqualityComparer <int>();
            var eq2 = new TreeEqualityComparer();

            Assert.IsTrue(eq1.Equals(expected, res1));
            Assert.IsTrue(eq2.Equals(expected, res2));
        }
Exemplo n.º 3
0
        public void TreeVisitor_Trivial()
        {
            var tree = new Tree <int>(42, new Tree <int>(43), new Tree <int>(44, new Tree <int>(45), new Tree <int>(46)));

            var res1 = new MyVisitor().Visit(tree);
            var res2 = new MyVisitor <int>().Visit(tree);

            var expected = new Tree <int>(42, new Tree <int>(44, new Tree <int>(46), new Tree <int>(45)), new Tree <int>(43));

            var eq1 = new TreeEqualityComparer();
            var eq2 = new TreeEqualityComparer <int>();

            Assert.IsTrue(eq1.Equals(expected, res1));
            Assert.IsTrue(eq2.Equals(expected, res2));
        }
        public void TreeEqualityComparer_Generic_Nullary()
        {
            var eq = new TreeEqualityComparer <int>();

            var t1 = new Tree <int>(42);
            var t2 = new Tree <int>(43);
            var t3 = new Tree <int>(42);

            Assert.IsTrue(eq.Equals(t1, t1));
            Assert.IsTrue(eq.Equals(t2, t2));
            Assert.IsTrue(eq.Equals(t3, t3));
            Assert.IsTrue(eq.Equals(t1, t3));
            Assert.IsTrue(eq.Equals(t3, t1));
            Assert.IsFalse(eq.Equals(t1, t2));
            Assert.IsFalse(eq.Equals(t2, t1));
            Assert.IsFalse(eq.Equals(t2, t3));
            Assert.IsFalse(eq.Equals(t3, t2));

            var h1 = eq.GetHashCode(t1);
            var h3 = eq.GetHashCode(t3);

            Assert.AreEqual(h1, h3);
        }
        public void TreeEqualityComparer_Generic_CustomComparer()
        {
            var eq = new TreeEqualityComparer <string>(StringComparer.OrdinalIgnoreCase);

            var t1 = new Tree <string>("Foo", new Tree <string>("bAr"), new Tree <string>("QUX"));
            var t2 = new Tree <string>("foo", new Tree <string>("baz"), new Tree <string>("qux"));
            var t3 = new Tree <string>("foO", new Tree <string>("bar"), new Tree <string>("qux"));

            Assert.IsTrue(eq.Equals(t1, t1));
            Assert.IsTrue(eq.Equals(t2, t2));
            Assert.IsTrue(eq.Equals(t3, t3));
            Assert.IsTrue(eq.Equals(t1, t3));
            Assert.IsTrue(eq.Equals(t3, t1));
            Assert.IsFalse(eq.Equals(t1, t2));
            Assert.IsFalse(eq.Equals(t2, t1));
            Assert.IsFalse(eq.Equals(t2, t3));
            Assert.IsFalse(eq.Equals(t3, t2));

            var h1 = eq.GetHashCode(t1);
            var h3 = eq.GetHashCode(t3);

            Assert.AreEqual(h1, h3);
        }
        public void TreeEqualityComparer_Structural()
        {
            var eq = new TreeEqualityComparer();

            var t1 = new Tree <int>(42, new Tree <int>(43), new Tree <int>(44));
            var t2 = new Tree <int>(42, new Tree <int>(43));
            var t3 = new Tree <int>(42, new Tree <int>(43), new Tree <int>(44));

            Assert.IsTrue(eq.Equals(t1, t1));
            Assert.IsTrue(eq.Equals(t2, t2));
            Assert.IsTrue(eq.Equals(t3, t3));
            Assert.IsTrue(eq.Equals(t1, t3));
            Assert.IsTrue(eq.Equals(t3, t1));
            Assert.IsFalse(eq.Equals(t1, t2));
            Assert.IsFalse(eq.Equals(t2, t1));
            Assert.IsFalse(eq.Equals(t2, t3));
            Assert.IsFalse(eq.Equals(t3, t2));

            var h1 = eq.GetHashCode(t1);
            var h3 = eq.GetHashCode(t3);

            Assert.AreEqual(h1, h3);
        }