Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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");
        }