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)); }
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)); }
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); }