Example #1
0
 public OffsetNodeTests()
 {
     childNode    = Substitute.For <IDataNode>();
     binaryReader = Substitute.For <IBinaryReader>();
     binaryWriter = Substitute.For <IBinaryWriter>();
     offsetNode   = new OffsetNode(childNode);
 }
Example #2
0
            public IOffsetNode Build()
            {
                IOffsetNode node = Substitute.For <IOffsetNode>();

                node.ChildNode.Returns(ChildNode);

                return(node);
            }
Example #3
0
        private object ProcessOffsetNode(IBinaryReader binaryReader, IOffsetNode node)
        {
            uint offset = node.ReadOffset(binaryReader);

            object result = null;

            binaryReader.DoAtPosition(offset, () => result = ProcessDataNode(binaryReader, node.ChildNode));

            return(result);
        }
Example #4
0
        private void VerifyReadTreeWithNodeAtOffset(IDataNode node, uint originalPosition, uint offsetPosition)
        {
            node.Read(binaryReader);

            IOffsetNode offsetNode = node.Edges[0].ChildNode as IOffsetNode;

            offsetNode.ReadOffset(binaryReader);
            binaryReader.VerifyDoAtPosition(originalPosition, offsetPosition, () => offsetNode.ChildNode.Read(binaryReader));

            (node.Edges[1].ChildNode as IDataNode).Read(binaryReader);
        }
Example #5
0
        private void SetupTreeWithNodeAtOffset(IDataNode node, TreeWithNodeAtOffset.Class expected, uint offset)
        {
            node.Read(binaryReader).Returns(_ => new TreeWithNodeAtOffset.Class());

            IOffsetNode offsetNode = node.Edges[0].ChildNode as IOffsetNode;

            offsetNode.ReadOffset(binaryReader).Returns(offset);
            offsetNode.ChildNode.Read(binaryReader).Returns(expected.ValueAtOffset);

            (node.Edges[1].ChildNode as IDataNode).Read(binaryReader).Returns(expected.ValueInline);
        }
Example #6
0
        public void Test_Writing_An_Instance_Of_A_Tree_With_Nested_Empty_Lists()
        {
            uint      originalPosition1 = 28, originalPosition2 = 39;
            uint      offsetPosition1 = 20, offsetPosition2 = 30;
            IDataNode rootNode = TreeWithNestedLists.Build();

            TreeWithNestedLists.Class value = new TreeWithNestedLists.Class
            {
                List1 = new List <TreeWithHeight1.Class>
                {
                },
                List2 = new List <TreeWithHeight2.Class>
                {
                }
            };

            IOffsetNode list1ChildNode = rootNode.Edges[0].ChildNode as IOffsetNode;

            list1ChildNode
            .Write(binaryWriter, Arg.Any <object>())
            .Returns(offsetPosition1);

            IOffsetNode list2ChildNode = rootNode.Edges[1].ChildNode as IOffsetNode;

            list2ChildNode
            .Write(binaryWriter, Arg.Any <object>())
            .Returns(offsetPosition2);

            binaryWriter.GetPosition().Returns(originalPosition1, originalPosition2);

            treeWriter.Write(binaryWriter, value, rootNode)
            .Should()
            .Equal(offsetPosition1, offsetPosition2);

            list1ChildNode.ChildNode.DidNotReceive().Write(binaryWriter, Arg.Any <object>());
            list2ChildNode.ChildNode.DidNotReceive().Write(binaryWriter, Arg.Any <object>());

            Received.InOrder(() => VerifyWriteTreeWithNestedLists(rootNode, value, originalPosition1, originalPosition2, offsetPosition1, offsetPosition2));
        }
Example #7
0
        private void ProcessOffsetNode(IBinaryWriter binaryWriter, IOffsetNode node, object value)
        {
            uint offsetPosition = node.Write(binaryWriter, value);

            Enqueue(node.ChildNode, value, offsetPosition);
        }