private static void CompareNodes(IUriNode a, IUriNode b) { Console.WriteLine("URI Node A has String form: " + a.ToString()); Console.WriteLine("URI Node B has String form: " + b.ToString()); Console.WriteLine(); Console.WriteLine("URI Node A has Hash Code: " + a.GetHashCode()); Console.WriteLine("URI Node B has Hash Code: " + b.GetHashCode()); Console.WriteLine(); Console.WriteLine("Nodes are Equal? " + a.Equals(b)); Console.WriteLine("Hash Codes are Equal? " + a.GetHashCode().Equals(b.GetHashCode())); Console.WriteLine(); }
public static void CompareNodes(IUriNode a, IUriNode b, bool expectEquality) { Console.WriteLine("URI Node A has String form: " + a.ToString()); Console.WriteLine("URI Node B has String form: " + b.ToString()); Console.WriteLine(); Console.WriteLine("URI Node A has Hash Code: " + a.GetHashCode()); Console.WriteLine("URI Node B has Hash Code: " + b.GetHashCode()); Console.WriteLine(); Console.WriteLine("Nodes are Equal? " + a.Equals(b)); Console.WriteLine("Hash Codes are Equal? " + a.GetHashCode().Equals(b.GetHashCode())); Console.WriteLine(); if (expectEquality) { Assert.AreEqual(a.GetHashCode(), b.GetHashCode()); Assert.AreEqual(a, b); } else { Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode()); Assert.AreNotEqual(a, b); } }
public void NodesHashCodes() { Console.WriteLine("Tests that Literal and URI Nodes produce different Hashes"); Console.WriteLine(); //Create the Nodes Graph g = new Graph(); IUriNode u = g.CreateUriNode(new Uri("http://www.google.com")); ILiteralNode l = g.CreateLiteralNode("http://www.google.com/"); Console.WriteLine("Created a URI and Literal Node both referring to 'http://www.google.com'"); Console.WriteLine("String form of URI Node is:"); Console.WriteLine(u.ToString()); Console.WriteLine("String form of Literal Node is:"); Console.WriteLine(l.ToString()); Console.WriteLine("Hash Code of URI Node is " + u.GetHashCode()); Console.WriteLine("Hash Code of Literal Node is " + l.GetHashCode()); Console.WriteLine("Hash Codes are Equal? " + u.GetHashCode().Equals(l.GetHashCode())); Console.WriteLine("Nodes are equal? " + u.Equals(l)); Assert.NotEqual(u.GetHashCode(), l.GetHashCode()); Assert.NotSame(u, l); //Assert.NotEqual(u, l); //Create some plain and typed literals which may have colliding Hash Codes ILiteralNode plain = g.CreateLiteralNode("test^^http://example.org/type"); ILiteralNode typed = g.CreateLiteralNode("test", new Uri("http://example.org/type")); Console.WriteLine(); Console.WriteLine("Created a Plain and Typed Literal where the String representations are identical"); Console.WriteLine("Plain Literal String form is:"); Console.WriteLine(plain.ToString()); Console.WriteLine("Typed Literal String from is:"); Console.WriteLine(typed.ToString()); Console.WriteLine("Hash Code of Plain Literal is " + plain.GetHashCode()); Console.WriteLine("Hash Code of Typed Literal is " + typed.GetHashCode()); Console.WriteLine("Hash Codes are Equal? " + plain.GetHashCode().Equals(typed.GetHashCode())); Console.WriteLine("Nodes are equal? " + plain.Equals(typed)); Assert.NotEqual(plain.GetHashCode(), typed.GetHashCode()); Assert.NotEqual(plain, typed); //Create Triples IBlankNode b = g.CreateBlankNode(); IUriNode type = g.CreateUriNode("rdf:type"); Triple t1, t2; t1 = new Triple(b, type, u); t2 = new Triple(b, type, l); Console.WriteLine(); Console.WriteLine("Created two Triples stating a Blank Node has rdf:type of the URI Nodes created earlier"); Console.WriteLine("String form of Triple 1 (using URI Node) is:"); Console.WriteLine(t1.ToString()); Console.WriteLine("String form of Triple 2 (using Literal Node) is:"); Console.WriteLine(t2.ToString()); Console.WriteLine("Hash Code of Triple 1 is " + t1.GetHashCode()); Console.WriteLine("Hash Code of Triple 2 is " + t2.GetHashCode()); Console.WriteLine("Hash Codes are Equal? " + t1.GetHashCode().Equals(t2.GetHashCode())); Console.WriteLine("Triples are Equal? " + t1.Equals(t2)); Assert.NotEqual(t1.GetHashCode(), t2.GetHashCode()); Assert.NotEqual(t1, t2); //Create Triples from the earlier Literal Nodes t1 = new Triple(b, type, plain); t2 = new Triple(b, type, typed); Console.WriteLine(); Console.WriteLine("Created two Triples stating a Blank Node has rdf:type of the Literal Nodes created earlier"); Console.WriteLine("String form of Triple 1 (using Plain Literal) is:"); Console.WriteLine(t1.ToString()); Console.WriteLine("String form of Triple 2 (using Typed Literal) is:"); Console.WriteLine(t2.ToString()); Console.WriteLine("Hash Code of Triple 1 is " + t1.GetHashCode()); Console.WriteLine("Hash Code of Triple 2 is " + t2.GetHashCode()); Console.WriteLine("Hash Codes are Equal? " + t1.GetHashCode().Equals(t2.GetHashCode())); Console.WriteLine("Triples are Equal? " + t1.Equals(t2)); Assert.NotEqual(t1.GetHashCode(), t2.GetHashCode()); Assert.NotEqual(t1, t2); }