コード例 #1
0
        public void CanRead()
        {
            var dfuMock = new Mock <IDfu>();

            dfuMock.SetupProperty(x => x.Prefix);
            dfuMock.SetupProperty(x => x.Images);
            dfuMock.SetupProperty(x => x.Suffix);

            var prefixReaded  = 0;
            var dfuPrefixMock = new Mock <IDfuPrefix>();

            dfuPrefixMock.SetupGet(x => x.Targets).Returns(0);
            var dfuPrefixDeserializerMock = new Mock <IDfuPrefixDeserializer>();

            dfuPrefixDeserializerMock.Setup(x => x.Read(It.IsAny <Stream>()))
            .Callback <Stream>(s => prefixReaded++)
            .Returns(dfuPrefixMock.Object);

            var imagesReaded              = 0;
            var dfuImagesMock             = new Mock <IDfuImages>();
            var dfuImagesDeserializerMock = new Mock <IDfuImagesDeserializer>();

            dfuImagesDeserializerMock.Setup(
                x => x.Read(
                    It.IsAny <Stream>(),
                    It.Is <int>(c => c == 0)))
            .Callback <Stream, int>((s, c) => imagesReaded++)
            .Returns(dfuImagesMock.Object);

            var suffixReaded              = 0;
            var dfuSuffixMock             = new Mock <IDfuSuffix>();
            var dfuSuffixDeserializerMock = new Mock <IDfuSuffixDeserializer>();

            dfuSuffixDeserializerMock.Setup(x => x.Read(It.IsAny <Stream>()))
            .Callback <Stream>(s => suffixReaded++)
            .Returns(dfuSuffixMock.Object);

            var sut = new DfuDeserializer(
                () => dfuMock.Object,
                () => dfuPrefixDeserializerMock.Object,
                () => dfuImagesDeserializerMock.Object,
                () => dfuSuffixDeserializerMock.Object);

            var streamMock = new Mock <Stream>();

            var dfu = sut.Read(streamMock.Object);

            Assert.That(dfu.Prefix, Is.EqualTo(dfuPrefixMock.Object));
            Assert.That(dfu.Images, Is.EqualTo(dfuImagesMock.Object));
            Assert.That(dfu.Suffix, Is.EqualTo(dfuSuffixMock.Object));
            Assert.That(prefixReaded, Is.EqualTo(1));
            Assert.That(imagesReaded, Is.EqualTo(1));
            Assert.That(suffixReaded, Is.EqualTo(1));
        }
コード例 #2
0
        public void CanReadFullMocks()
        {
            var sampleData = new byte[] { 1, 2, 3, 4 };

            // Array generated by DFU File Manager v3.0.6
            var sample = new byte[] {
                0x44, 0x66, 0x75, 0x53, 0x65,
                0x01,
                0x29, 0x01, 0x00, 0x00,
                0x01,

                0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
                0x02,
                0x01, 0x00, 0x00, 0x00,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51,
                0x0C, 0x00, 0x00, 0x00,
                0x01, 0x00, 0x00, 0x00,

                0x00, 0x00, 0x00, 0x08,
                0x04, 0x00, 0x00, 0x00,
                0x01, 0x02, 0x03, 0x04,

                0x78, 0x56,
                0x34, 0x12,
                0x83, 0x04,
                0x1A, 0x01,
                0x55, 0x46, 0x44,
                0x10,
                0xB7, 0x02, 0xE0, 0x8D
            };

            var dfuPrefixMock = new Mock <IDfuPrefix>();

            dfuPrefixMock.SetupProperty(x => x.Signature);
            dfuPrefixMock.SetupProperty(x => x.Version);
            dfuPrefixMock.SetupProperty(x => x.DfuImageSize);
            dfuPrefixMock.SetupProperty(x => x.Targets);

            var dfuSuffixMock = new Mock <IDfuSuffix>();

            dfuSuffixMock.SetupProperty(x => x.Device);
            dfuSuffixMock.SetupProperty(x => x.Product);
            dfuSuffixMock.SetupProperty(x => x.Vendor);
            dfuSuffixMock.SetupProperty(x => x.Dfu);
            dfuSuffixMock.SetupProperty(x => x.Length);
            dfuSuffixMock.SetupProperty(x => x.DfuSignature);

            var targetPrefixMock = new Mock <ITargetPrefix>();

            targetPrefixMock.SetupProperty(x => x.TargetId);
            targetPrefixMock.SetupProperty(x => x.Signature);
            targetPrefixMock.SetupProperty(x => x.IsTargetNamed);
            targetPrefixMock.SetupProperty(x => x.TargetName);
            targetPrefixMock.SetupProperty(x => x.TargetSize);
            targetPrefixMock.SetupProperty(x => x.NbElements);

            var imageElementMock = new Mock <IImageElement>();

            imageElementMock.SetupProperty(x => x.ElementAddress);
            imageElementMock.SetupProperty(x => x.Data);
            imageElementMock.SetupProperty(x => x.ElementSize);

            var imageElementsList = new List <IImageElement>();

            var dfuImageMock = new Mock <IDfuImage>();

            dfuImageMock.SetupProperty(x => x.Prefix);
            dfuImageMock.SetupGet(x => x.ImageElements)
            .Returns(imageElementsList);

            var imagesList = new List <IDfuImage>();

            var dfuImagesMock = new Mock <IDfuImages>();

            dfuImagesMock.SetupGet(x => x.Images).Returns(imagesList);

            var dfuMock = new Mock <IDfu>();

            dfuMock.SetupGet(x => x.Prefix).Returns(dfuPrefixMock.Object);
            dfuMock.SetupGet(x => x.Images).Returns(dfuImagesMock.Object);
            dfuMock.SetupGet(x => x.Suffix).Returns(dfuSuffixMock.Object);

            var sut = new DfuDeserializer(
                () => dfuMock.Object,
                () => new DfuPrefixDeserializer(
                    (m, p) => new DeserializerException(m, p),
                    () => dfuPrefixMock.Object),
                () => new DfuImagesDeserializer(
                    () => dfuImagesMock.Object,
                    () => new DfuImageDeserializer(
                        () => new TargetPrefixDeserializer(
                            (m, p) => new DeserializerException(m, p),
                            () => targetPrefixMock.Object),
                        () => new ImageElementDeserializer(
                            () => imageElementMock.Object),
                        () => dfuImageMock.Object)),
                () => new DfuSuffixDeserializer(
                    (m, p) => new DeserializerException(m, p),
                    () => dfuSuffixMock.Object));

            var tempStream = new MemoryStream(sample, false);
            var dfu        = sut.Read(tempStream);

            Assert.That(dfu.Prefix.Signature, Is.EqualTo("DfuSe"));
            Assert.That(dfu.Prefix.Version, Is.EqualTo(1));
            Assert.That(dfu.Prefix.DfuImageSize, Is.EqualTo(0x129));
            Assert.That(dfu.Prefix.Targets, Is.EqualTo(1));

            Assert.That(dfu.Suffix.Device, Is.EqualTo(0x5678));
            Assert.That(dfu.Suffix.Product, Is.EqualTo(0x1234));
            Assert.That(dfu.Suffix.Vendor, Is.EqualTo(0x0483));
            Assert.That(dfu.Suffix.Dfu, Is.EqualTo(0x011a));
            Assert.That(dfu.Suffix.DfuSignature, Is.EqualTo("UFD"));
            Assert.That(dfu.Suffix.Length, Is.EqualTo(16));

            Assert.That(dfu.Images.Images.Count, Is.EqualTo(1));

            var dfuImage     = dfu.Images.Images.First();
            var targetPrefix = dfuImage.Prefix;

            Assert.That(targetPrefix.TargetId, Is.EqualTo(2));
            Assert.That(targetPrefix.Signature, Is.EqualTo("Target"));
            Assert.That(targetPrefix.IsTargetNamed, Is.True);
            Assert.That(targetPrefix.TargetName, Is.EqualTo(new string('Q', 255)));

            Assert.That(dfuImage.ImageElements.Count, Is.EqualTo(1));
            var imageElement = dfuImage.ImageElements.First();

            Assert.That(imageElement.ElementAddress, Is.EqualTo(0x08000000));
            Assert.That(imageElement.ElementSize, Is.EqualTo(sampleData.Length));
            Assert.That(imageElement.Data, Is.EqualTo(sampleData));
        }