Пример #1
0
        public void MultipleLinksOnlyDAG()
        {
            var a     = Encoding.UTF8.GetBytes("a");
            var anode = new DagNode(a);
            var alink = anode.ToLink("a");

            var b     = Encoding.UTF8.GetBytes("b");
            var bnode = new DagNode(b);
            var blink = bnode.ToLink("b");

            var node = new DagNode(null, new[] { alink, blink });

            Assert.AreEqual(0, node.DataBytes.Length);
            Assert.AreEqual(2, node.Links.Count());
            Assert.AreEqual("QmbNgNPPykP4YTuAeSa3DsnBJWLVxccrqLUZDPNQfizGKs", node.Hash);

            RoundtripTest(node);
        }
Пример #2
0
        public void AddLink()
        {
            var a     = Encoding.UTF8.GetBytes("a");
            var anode = new DagNode(a);

            var b     = Encoding.UTF8.GetBytes("b");
            var bnode = new DagNode(b);

            var cnode = bnode.AddLink(anode.ToLink());

            Assert.IsFalse(Object.ReferenceEquals(bnode, cnode));
            Assert.AreEqual(1, cnode.Data.Length);
            Assert.AreEqual(1, cnode.Links.Count());
            Assert.AreEqual(anode.Hash, cnode.Links.First().Hash);
            Assert.AreEqual(anode.Size, cnode.Links.First().Size);

            RoundtripTest(cnode);
        }
Пример #3
0
        void RoundtripTest(DagNode a)
        {
            var ms = new MemoryStream();

            a.Write(ms);
            ms.Position = 0;
            var b = new DagNode(ms);

            CollectionAssert.AreEqual(a.DataBytes, b.DataBytes);
            Assert.AreEqual(a.Links.Count(), b.Links.Count());
            a.Links.Zip(b.Links, (first, second) =>
            {
                Assert.AreEqual(first.Hash, second.Hash);
                Assert.AreEqual(first.Name, second.Name);
                Assert.AreEqual(first.Size, second.Size);
                return(first);
            }).ToArray();
        }
Пример #4
0
        public void MultipleLinksDataDAG()
        {
            var a     = Encoding.UTF8.GetBytes("a");
            var anode = new DagNode(a);
            var alink = anode.ToLink("a");

            var b     = Encoding.UTF8.GetBytes("b");
            var bnode = new DagNode(b);
            var blink = bnode.ToLink("b");

            var ab   = Encoding.UTF8.GetBytes("ab");
            var node = new DagNode(ab, new[] { alink, blink });

            CollectionAssert.AreEqual(ab, node.DataBytes);
            Assert.AreEqual(2, node.Links.Count());
            Assert.AreEqual("Qma5sYpEc9hSYdkuXpMDJYem95Mj7hbEd9C412dEQ4ZkfP", (string)node.Id);

            RoundtripTest(node);
        }
Пример #5
0
        public void RemoveLink()
        {
            var a     = Encoding.UTF8.GetBytes("a");
            var anode = new DagNode(a);

            var b     = Encoding.UTF8.GetBytes("b");
            var bnode = new DagNode(b);

            var c     = Encoding.UTF8.GetBytes("c");
            var cnode = new DagNode(c, new[] { anode.ToLink(), bnode.ToLink() });

            var dnode = cnode.RemoveLink(anode.ToLink());

            Assert.IsFalse(Object.ReferenceEquals(dnode, cnode));
            Assert.AreEqual(1, dnode.DataBytes.Length);
            Assert.AreEqual(1, dnode.Links.Count());
            Assert.AreEqual(bnode.Id, dnode.Links.First().Id);
            Assert.AreEqual(bnode.Size, dnode.Links.First().Size);

            RoundtripTest(cnode);
        }