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)); }
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)); }