Пример #1
0
        public void Dispose_Dispose_CloseIsCalled()
        {
            var closeWasCalled = false;
            var close          = new Action(() => closeWasCalled = true);
            var dataReader     = new MockBinaryStreamReader(close);

            dataReader.Dispose();

            Assert.IsTrue(closeWasCalled);
        }
Пример #2
0
        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);
                }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
                }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
                }
        }