public void TryReadRecord_MultipleRecordsWithHeader_RecordsAreRead() { var headerBytes = new byte[4]; var record1Bytes = BitConverter.GetBytes((int)100).Concat("Record 1".Select(x => (byte)x).ToArray()).Concat(new byte[] { 0, 0 }); var record2Bytes = BitConverter.GetBytes((int)200).Concat("Record 2".Select(x => (byte)x).ToArray()).Concat(new byte[] { 0, 0 }); var fileBytes = headerBytes.Concat(record1Bytes).Concat(record2Bytes).ToArray(); File.WriteAllBytes(this.FilePath, fileBytes); using (var fileReader = new FixedWidthBinaryFileReader(this.FilePath)) { fileReader.HeaderSize = 4; fileReader.RecordSize = 14; fileReader.FooterSize = 0; fileReader.Open(); var couldReadRecord1 = fileReader.TryReadRecord(out var record1, out var failures1); var couldReadRecord2 = fileReader.TryReadRecord(out var record2, out var failures2); var couldReadRecord3 = fileReader.TryReadRecord(out var record3, out var failures3); Assert.IsTrue(couldReadRecord1); Assert.IsTrue(couldReadRecord2); Assert.IsFalse(couldReadRecord3); Assert.IsNull(failures1); Assert.IsNull(failures2); FixedWidthBinaryFileReaderTests.AssertRecordMatches((byte[])record1, 100, "Record 1"); FixedWidthBinaryFileReaderTests.AssertRecordMatches((byte[])record2, 200, "Record 2"); } }
public void TryReadRecord_InvalidHeader_ExceptionIsThrown() { var fileBytes = new byte[] { 0, 0 }; File.WriteAllBytes(this.FilePath, fileBytes); using (var fileReader = new FixedWidthBinaryFileReader(this.FilePath)) { fileReader.HeaderSize = 4; fileReader.RecordSize = 14; fileReader.FooterSize = 2; fileReader.Open(); fileReader.TryReadRecord(out var record1, out var failures1); } }
public void TryReadRecord_ZeroRecords_ZeroRecordsAreRead() { var fileBytes = new byte[0]; File.WriteAllBytes(this.FilePath, fileBytes); using (var fileReader = new FixedWidthBinaryFileReader(this.FilePath)) { fileReader.HeaderSize = 0; fileReader.RecordSize = 14; fileReader.FooterSize = 0; fileReader.Open(); var couldReadRecord1 = fileReader.TryReadRecord(out var record1, out var failures1); Assert.IsFalse(couldReadRecord1); } }
public void TryReadRecord_InvalidRecord_ExceptionIsThrown() { var headerBytes = new byte[4]; var footerBytes = new byte[2]; var record1Bytes = BitConverter.GetBytes((int)100).Concat("Rec".Select(x => (byte)x).ToArray()); var fileBytes = headerBytes.Concat(record1Bytes).Concat(footerBytes).ToArray(); File.WriteAllBytes(this.FilePath, fileBytes); using (var fileReader = new FixedWidthBinaryFileReader(this.FilePath)) { fileReader.HeaderSize = 4; fileReader.RecordSize = 14; fileReader.FooterSize = 2; fileReader.Open(); fileReader.TryReadRecord(out var record1, out var failures1); fileReader.TryReadRecord(out var record2, out var failures2); } }
public void TryReadRecord_ZeroRecordsWithHeaderAndFooter_ZeroRecordsAreRead() { var headerBytes = new byte[4]; var footerBytes = new byte[2]; var fileBytes = headerBytes.Concat(footerBytes).ToArray(); File.WriteAllBytes(this.FilePath, fileBytes); using (var fileReader = new FixedWidthBinaryFileReader(this.FilePath)) { fileReader.HeaderSize = 4; fileReader.RecordSize = 14; fileReader.FooterSize = 2; fileReader.Open(); var couldReadRecord1 = fileReader.TryReadRecord(out var record1, out var failures1); Assert.IsFalse(couldReadRecord1); } }