Exemple #1
0
        protected override IStructuralNode CreateChildNode(int index)
        {
            var pair        = _provider.StreamHeaderOffsets[index];
            var nameLen     = pair.Key.Length;
            var stringBytes = nameLen < 32 ? nameLen + 1 : 32;

            var template = new CompoundNodeTemplate()
            {
                { "Offset", StandardTemplates.UInt32 },
                { "Size", StandardTemplates.UInt32 },
                { "Name", StandardTemplates.Text(stringBytes, Encoding.ASCII) },
            };

            template.RoundWidthUpToBoundary(4);
            return(new TemplatedStructuralNode(_provider.Data, this, pair.Key, template, _provider.MetaDataOffset + pair.Value));
        }
Exemple #2
0
        public void RoundToMultiple()
        {
            var mockChild1 = new Mock <IStructuralNodeTemplate>(MockBehavior.Strict);

            mockChild1.Setup(x => x.Width).Returns(1);

            var mockChild2 = new Mock <IStructuralNodeTemplate>(MockBehavior.Strict);

            mockChild2.Setup(x => x.Width).Returns(4);

            var template = new CompoundNodeTemplate()
            {
                { "A", mockChild1.Object },
                { "B", mockChild2.Object },
            };

            template.RoundWidthUpToBoundary(4);

            Assert.That(template.Width, Is.EqualTo(8));
            Assert.That(template.Components.Select(x => x.Name), Is.EqualTo(new[] { "A", "B" }));
            Assert.That(template.Components.Select(x => x.Offset), Is.EqualTo(new[] { 0, 1 }));
            Assert.That(template.Components.Select(x => x.Template), Is.EqualTo(new[] { mockChild1.Object, mockChild2.Object }));
        }