public void Dispose_Dispose_CloseIsCalled() { var closeWasCalled = false; var close = new Action(() => closeWasCalled = true); var dataReader = new MockBinaryStreamReader(close); dataReader.Dispose(); Assert.IsTrue(closeWasCalled); }
public void TryReadRecord_ReadRecordInternalThrowsException_ExceptionIsPropogated() { var records = new byte[0]; var readRecord = new Func <BinaryReader, object>(br => throw new InternalTestFailureException()); using (var stream = new MemoryStream(records)) using (var dataReader = new MockBinaryStreamReader(stream, readRecord)) { dataReader.Open(); dataReader.TryReadRecord(out var record, out var failures); } }
public void TryReadRecord_RecordMapperProvidedWithOneRecord_RecordsIsReadAndMapped() { var recordsRead = 0; var records = new byte[] { 0x1 }; var mappedRecords = new byte[] { 0x2 }; var readRecord = new Func <BinaryReader, object>(br => { if (br.BaseStream.Position >= records.Length) { return(null); } recordsRead++; return(br.ReadByte()); }); var recordMapper = MockRepository.GenerateMock <IRecordMapper>(); recordMapper.Expect(x => x.TryMap( Arg <object> .Is.Equal(records[0]), out Arg <object> .Out(mappedRecords[0]).Dummy, out Arg <IEnumerable <FieldFailure> > .Out(null).Dummy)) .Return(true) .Repeat.Once(); bool couldReadRecord; IEnumerable <FieldFailure> failures; using (var stream = new MemoryStream(records)) using (var dataReader = new MockBinaryStreamReader(stream, readRecord, recordMapper)) { dataReader.Open(); do { couldReadRecord = dataReader.TryReadRecord(out var record, out failures); if (couldReadRecord) { Assert.AreEqual(mappedRecords[recordsRead - 1], record); } }while (couldReadRecord || failures?.Count() > 0); } recordMapper.VerifyAllExpectations(); Assert.AreEqual(records.Length, recordsRead); }
public void TryReadRecord_StreamFactoryProvidedWithOneRecord_RecordsIsRead() { var recordsRead = 0; var records = new byte[] { 0x1 }; var readRecord = new Func <BinaryReader, object>(br => { if (br.BaseStream.Position >= records.Length) { return(null); } recordsRead++; return(br.ReadByte()); }); bool couldReadRecord; IEnumerable <FieldFailure> failures; using (var stream = new MemoryStream(records)) { var streamFactory = MockRepository.GenerateMock <IStreamFactory>(); streamFactory.Expect(x => x.Create()).Return(stream).Repeat.Once(); using (var dataReader = new MockBinaryStreamReader(streamFactory, readRecord)) { dataReader.Open(); do { couldReadRecord = dataReader.TryReadRecord(out var record, out failures); if (couldReadRecord) { Assert.AreEqual(records[recordsRead - 1], record); } }while (couldReadRecord || failures?.Count() > 0); } streamFactory.VerifyAllExpectations(); } Assert.AreEqual(records.Length, recordsRead); }
public void TryReadRecord_RecordFailsToMap_RecordIsNotReadAndFailureIsReturned() { var recordsRead = 0; var records = new byte[] { 0x1 }; var failures = new List <FieldFailure>() { new FieldFailure() }; var readRecord = new Func <BinaryReader, object>(br => { if (br.BaseStream.Position >= records.Length) { return(null); } recordsRead++; return(br.ReadByte()); }); var recordMapper = MockRepository.GenerateMock <IRecordMapper>(); recordMapper.Stub(x => x.TryMap( Arg <object> .Is.Equal(records[0]), out Arg <object> .Out(null).Dummy, out Arg <IEnumerable <FieldFailure> > .Out(failures).Dummy)) .Return(false); using (var stream = new MemoryStream(records)) using (var dataReader = new MockBinaryStreamReader(stream, readRecord, recordMapper)) { dataReader.Open(); var couldReadRecord = dataReader.TryReadRecord(out var returnedRecord, out var returnedFailures); Assert.IsFalse(couldReadRecord); Assert.IsNull(returnedRecord); Assert.AreEqual(failures, returnedFailures); } }
public void TryReadRecord_StreamProvidedWithMultipleRecords_AllRecordsAreRead() { var recordsRead = 0; var records = new byte[] { 0x1, 0x2 }; var readRecord = new Func <BinaryReader, object>(br => { if (br.BaseStream.Position >= records.Length) { return(null); } recordsRead++; return(br.ReadByte()); }); bool couldReadRecord; IEnumerable <FieldFailure> failures; using (var stream = new MemoryStream(records)) using (var dataReader = new MockBinaryStreamReader(stream, readRecord)) { dataReader.Open(); do { couldReadRecord = dataReader.TryReadRecord(out var record, out failures); if (couldReadRecord) { Assert.AreEqual(records[recordsRead - 1], record); } }while (couldReadRecord || failures?.Count() > 0); } Assert.AreEqual(records.Length, recordsRead); }
public void TryReadRecord_StreamProvidedWithZeroRecords_NoRecordsAreRead() { var records = new byte[0]; var readRecord = new Func <BinaryReader, object>(br => { if (br.BaseStream.Position >= records.Length) { return(null); } return(br.ReadByte()); }); using (var stream = new MemoryStream(records)) using (var dataReader = new MockBinaryStreamReader(stream, readRecord)) { dataReader.Open(); var couldReadRecord = dataReader.TryReadRecord(out var record, out var failures); Assert.IsFalse(couldReadRecord); } }