public void StreamReadByteShouldReadByte() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act / Assert for (var i = 0; i < data.Length; i++) { Assert.AreEqual(stream.ReadByte(i), data[i]); } }
public void StreamReadByteShouldReturnNullWhenTryingToReadOutOfBounds() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act var result = stream.ReadByte(data.Length); // Assert Assert.AreEqual(null, result); }
public void StreamReadByteShouldReadByte() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act / Assert for (var i = 0; i < data.Length; i++) { Assert.AreEqual(stream.ReadByte(i), data[i]); } }
public bool AddPacket(FwPacket firmwarePacket) { if (VendorId == firmwarePacket.VendorId && ModelId == firmwarePacket.ModelId && firmwarePacket.hasPassedCRC && firmwarePacket.SectionType == 1 && !isComplete) { if (firmwarePacket.Data.Length != BlockSize) { //Console.WriteLine("Blocksize differs! At offset: 0x{0:X2}", firmwarePacket.FileOffset); } if (!CompletedOffsets.Contains(firmwarePacket.FileOffset)) { FirmwareStream.Seek(firmwarePacket.FileOffset, SeekOrigin.Begin); FirmwareStream.Write(firmwarePacket.Data, 0, firmwarePacket.Data.Length); BytesCompleted += (uint)firmwarePacket.Data.Length; CompletedOffsets.Add(firmwarePacket.FileOffset); if (BytesCompleted >= FileSize) { FirmwareStream.Close(); DirectoryInfo fwDir = Directory.CreateDirectory(Path.Combine(SaveDirectory, BaseName)); File.Move(Path.Combine(SaveDirectory, string.Format("{0}.tmp", BaseName)), Path.Combine(fwDir.FullName, FileName)); isComplete = true; FwCreateDate = DateTime.Now; File.WriteAllText(Path.Combine(fwDir.FullName, "date_stamp.txt"), FwCreateDate.Ticks.ToString()); Extractors.IFirmwareExtractor currentExtractor; if ((currentExtractor = Extractor) != null) { try { currentExtractor.ExtractParts(Path.Combine(fwDir.FullName, FileName)); GetVersion(); } catch (Exception ex) { Logger.AddLogItem("Error extracting firmware!", "FirmwareFile", LogLevels.Warning, ex); } } } } return(true); } else { return(false); } }
public void StreamCanShrinkWhenWritingData() { // Arrange var data = GetDummy(); var offset = data.Length / 2; var stream = new FirmwareStream(data); // Act stream.WriteByte(offset, null); var result = stream.ToArray(); // Assert Assert.AreEqual(offset, result.Length); }
public void StreamCanShrinkWhenWritingData() { // Arrange var data = GetDummy(); var offset = data.Length / 2; var stream = new FirmwareStream(data); // Act stream.WriteByte(offset, null); var result = stream.ToArray(); // Assert Assert.AreEqual(offset, result.Length); }
public void StreamCanExpandWhenWritingData() { // Arrange var data = GetDummy(); var offset = data.Length; var stream = new FirmwareStream(data); // Act stream.WriteByte(offset, 0xFF); var result = stream.ToArray(); // Assert Assert.AreEqual(offset + 1, result.Length); Assert.AreEqual(0xFF, result[offset]); }
public void StreamCanExpandWhenWritingData() { // Arrange var data = GetDummy(); var offset = data.Length; var stream = new FirmwareStream(data); // Act stream.WriteByte(offset, 0xFF); var result = stream.ToArray(); // Assert Assert.AreEqual(offset + 1, result.Length); Assert.AreEqual(0xFF, result[offset]); }
public void StreamReadBytesShouldReadBytes() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); var offset = 2; var count = 5; // Act var result = stream.ReadBytes(offset, count); // Assert Assert.AreEqual(count, result.Length); Assert.IsTrue(result.SequenceEqual(data.Skip(offset).Take(count))); }
public void StreamDoesNotExpandWhenShrinkingMultipleTimesAtDifferentOffsets() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act for (var i = 0; i < data.Length; i++) { stream.WriteByte(i, null); } var result = stream.ToArray(); // Assert Assert.AreEqual(0, result.Length); }
public void StreamDoesNotExpandWhenShrinkingMultipleTimesAtDifferentOffsets() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act for (var i = 0; i < data.Length; i++) { stream.WriteByte(i, null); } var result = stream.ToArray(); // Assert Assert.AreEqual(0, result.Length); }
public void StreamCanExpandAfterShrink() { // Arrange var data = GetDummy(); var originalLength = data.Length; var shrinkedLength = data.Length / 2; var stream = new FirmwareStream(data); // Act stream.WriteByte(shrinkedLength, null); stream.WriteByte(originalLength - 1, 1); var result = stream.ToArray(); // Assert Assert.AreEqual(originalLength, result.Length); }
public void StreamCanExpandAfterShrink() { // Arrange var data = GetDummy(); var originalLength = data.Length; var shrinkedLength = data.Length / 2; var stream = new FirmwareStream(data); // Act stream.WriteByte(shrinkedLength, null); stream.WriteByte(originalLength - 1, 1); var result = stream.ToArray(); // Assert Assert.AreEqual(originalLength, result.Length); }
public void StreamReadBytesShouldDesiredBytesCountEvenIfOutOfBounds() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); var offset = data.Length - 2; var count = 5; // Act var result = stream.ReadBytes(offset, count); // Assert Assert.AreEqual(count, result.Length); Assert.AreEqual(data[data.Length - 2], result[0]); Assert.AreEqual(data[data.Length - 1], result[1]); Assert.IsTrue(result.Skip(2).SequenceEqual(new byte[3])); }
public void StreamReadingDoesNotAffectFirmwareSize() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act for (var i = 0; i < data.Length + 10; i++) { stream.ReadByte(i); } stream.ReadBytes(0, 250); var result = stream.ToArray(); // Assert Assert.AreEqual(data.Length, result.Length); Assert.IsTrue(result.SequenceEqual(data)); }
public void StreamReadByteShouldReturnNullWhenTryingToReadOutOfBounds() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act var result = stream.ReadByte(data.Length); // Assert Assert.AreEqual(null, result); }
public void StreamReadingDoesNotAffectFirmwareSize() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); // Act for (var i = 0; i < data.Length + 10; i++) { stream.ReadByte(i); } stream.ReadBytes(0, 250); var result = stream.ToArray(); // Assert Assert.AreEqual(data.Length, result.Length); Assert.IsTrue(result.SequenceEqual(data)); }
public void StreamReadBytesShouldReadBytes() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); var offset = 2; var count = 5; // Act var result = stream.ReadBytes(offset, count); // Assert Assert.AreEqual(count, result.Length); Assert.IsTrue(result.SequenceEqual(data.Skip(offset).Take(count))); }
public void StreamReadBytesShouldDesiredBytesCountEvenIfOutOfBounds() { // Arrange var data = GetDummy(); var stream = new FirmwareStream(data); var offset = data.Length - 2; var count = 5; // Act var result = stream.ReadBytes(offset, count); // Assert Assert.AreEqual(count, result.Length); Assert.AreEqual(data[data.Length - 2], result[0]); Assert.AreEqual(data[data.Length - 1], result[1]); Assert.IsTrue(result.Skip(2).SequenceEqual(new byte[3])); }