public OffsetNodeTests() { childNode = Substitute.For <IDataNode>(); binaryReader = Substitute.For <IBinaryReader>(); binaryWriter = Substitute.For <IBinaryWriter>(); offsetNode = new OffsetNode(childNode); }
public IOffsetNode Build() { IOffsetNode node = Substitute.For <IOffsetNode>(); node.ChildNode.Returns(ChildNode); return(node); }
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); }
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); }
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); }
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)); }
private void ProcessOffsetNode(IBinaryWriter binaryWriter, IOffsetNode node, object value) { uint offsetPosition = node.Write(binaryWriter, value); Enqueue(node.ChildNode, value, offsetPosition); }