public void IndexingTriplesInBinaryTree1() { Graph g = new Graph(); ILiteralNode canonical = (1).ToLiteral(g); ILiteralNode alternate = g.CreateLiteralNode("01", UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeInteger)); Triple a = new Triple(g.CreateVariableNode("s"), g.CreateVariableNode("p"), canonical); Triple b = new Triple(g.CreateVariableNode("s"), g.CreateVariableNode("p"), alternate); AVLTree <Triple, int> tree = new AVLTree <Triple, int>(); tree.Add(a, 1); Assert.Equal(1, tree[a]); tree[b] = 2; //Since the default comparer considers the keys to be equal //lookup via either key should now give the value 2 rather than the originally //set value since the 2nd Add() just changes the existing value for the key //rather than adding a new key value pair Assert.Equal(2, tree[a]); Assert.Equal(2, tree[b]); //With the default comparer we expect to see 1 here rather than 2 because //the keys are considered equal Assert.Single(tree.Keys); }
public void IndexingTriplesInBinaryTree2() { Graph g = new Graph(); ILiteralNode canonical = (1).ToLiteral(g); ILiteralNode alternate = g.CreateLiteralNode("01", UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeInteger)); Triple a = new Triple(g.CreateVariableNode("s"), g.CreateVariableNode("p"), canonical); Triple b = new Triple(g.CreateVariableNode("s"), g.CreateVariableNode("p"), alternate); AVLTree <Triple, int> tree = new AVLTree <Triple, int>(new FullTripleComparer(new FastNodeComparer())); tree.Add(a, 1); Assert.Equal(1, tree[a]); tree.Add(b, 2); //With the FastNodeComparer the keys are non-equal so should //create separate key value pairs in the tree Assert.Equal(2, tree[b]); Assert.Equal(1, tree[a]); Assert.NotEqual(2, tree[a]); //With the FastNodeComparer there should be 2 keys in the tree //because the keys are not considered equal Assert.Equal(2, tree.Keys.Count()); }
public void NodeCompareToMixedNodes2() { Graph g = new Graph(); IBlankNode b = g.CreateBlankNode(); ILiteralNode l = g.CreateLiteralNode("literal", "en"); IUriNode u = g.CreateUriNode(new Uri("http://example.org")); IVariableNode v = g.CreateVariableNode("var"); int c = b.CompareTo(l); Assert.Equal(c * -1, l.CompareTo(b)); c = b.CompareTo(u); Assert.Equal(c * -1, u.CompareTo(b)); c = b.CompareTo(v); Assert.Equal(c * -1, v.CompareTo(b)); c = l.CompareTo(b); Assert.Equal(c * -1, b.CompareTo(l)); c = l.CompareTo(u); Assert.Equal(c * -1, u.CompareTo(l)); c = l.CompareTo(v); Assert.Equal(c * -1, v.CompareTo(l)); c = u.CompareTo(b); Assert.Equal(c * -1, b.CompareTo(u)); c = u.CompareTo(l); Assert.Equal(c * -1, l.CompareTo(u)); c = u.CompareTo(v); Assert.Equal(c * -1, v.CompareTo(u)); c = v.CompareTo(b); Assert.Equal(c * -1, b.CompareTo(v)); c = v.CompareTo(l); Assert.Equal(c * -1, l.CompareTo(v)); c = v.CompareTo(u); Assert.Equal(c * -1, u.CompareTo(v)); }
public void NodeCompareToMixedNodes2() { Graph g = new Graph(); IBlankNode b = g.CreateBlankNode(); ILiteralNode l = g.CreateLiteralNode("literal", "en"); IUriNode u = g.CreateUriNode(new Uri("http://example.org")); IVariableNode v = g.CreateVariableNode("var"); int c = b.CompareTo(l); Assert.AreEqual(c * -1, l.CompareTo(b), "Expected l compareTo b to be inverse of b compareTo l"); c = b.CompareTo(u); Assert.AreEqual(c * -1, u.CompareTo(b), "Expected l compareTo u to be inverse of u compareTo l"); c = b.CompareTo(v); Assert.AreEqual(c * -1, v.CompareTo(b), "Expected l compareTo v to be inverse of v compareTo l"); c = l.CompareTo(b); Assert.AreEqual(c * -1, b.CompareTo(l), "Expected b compareTo l to be inverse of l compareTo b"); c = l.CompareTo(u); Assert.AreEqual(c * -1, u.CompareTo(l), "Expected u compareTo l to be inverse of l compareTo u"); c = l.CompareTo(v); Assert.AreEqual(c * -1, v.CompareTo(l), "Expected v compareTo l to be inverse of l compareTo v"); c = u.CompareTo(b); Assert.AreEqual(c * -1, b.CompareTo(u), "Expected b compareTo u to be inverse of u compareTo b"); c = u.CompareTo(l); Assert.AreEqual(c * -1, l.CompareTo(u), "Expected l compareTo u to be inverse of u compareTo l"); c = u.CompareTo(v); Assert.AreEqual(c * -1, v.CompareTo(u), "Expected v compareTo u to be inverse of u compareTo v"); c = v.CompareTo(b); Assert.AreEqual(c * -1, b.CompareTo(v), "Expected b compareTo v to be inverse of v compareTo b"); c = v.CompareTo(l); Assert.AreEqual(c * -1, l.CompareTo(v), "Expected l compareTo v to be inverse of v compareTo l"); c = v.CompareTo(u); Assert.AreEqual(c * -1, u.CompareTo(v), "Expected u compareTo v to be inverse of v compareTo u"); }