public IListNode Build() { IListNode node = Substitute.For <IListNode>(); node.ChildNode.Returns(ChildNode); node.CreateList().Returns(new List <T>()); node.GetListCount(Arg.Any <IList <T> >()).Returns(args => { IList <T> list = (IList <T>)args[0]; return(list.Count); }); node.GetListEntry(Arg.Any <IList <T> >(), Arg.Any <int>()).Returns(args => { IList <T> list = (IList <T>)args[0]; int index = (int)args[1]; return(list[index]); }); SetupAddEntry(node); return(node); }
private void ProcessListNode(IBinaryWriter binaryWriter, IListNode node, object list) { uint offsetPosition = node.Write(binaryWriter, list); int count = node.GetListCount(list); if (count == 0) { Enqueue(node.ChildNode, null, offsetPosition); return; } Enqueue(node.ChildNode, node.GetListEntry(list, 0), offsetPosition); for (int n = 1; n < count; ++n) { Enqueue(node.ChildNode, node.GetListEntry(list, n)); } }