public void ReadRecord_GoodStreamWithHeadersAndNoOptions_ReturnsDictionary()
        {
            TextReader stream    = FakeCsvGenerator.GenerateGoodTextReader(addHeaders: true);
            var        csvReader = new CustomCsvReader(stream);

            IDictionary <string, string> record = csvReader.ReadRecord();

            Assert.AreEqual(FakeCsvGenerator.GenerateRecord(FakeCsvGenerator.GenerateRecordValues(-1), FakeCsvGenerator.GenerateRecordValues(0)), record);
        }
        public void ReadRecord_GoodStreamNoHeadersInFileOrInOptions_ThrowsException()
        {
            var csvReader = new CustomCsvReader(FakeCsvGenerator.GenerateGoodTextReader(), new CustomCsvReaderOptions()
            {
                ReadHeaders = false
            });

            Assert.Catch(() =>
            {
                csvReader.ReadRecord();
            });
        }
        public void ReadRecord_ProvidingOwnHeadersWithNoHeadersInFile_ReturnsDictionary()
        {
            var csvReader = new CustomCsvReader(
                FakeCsvGenerator.GenerateGoodTextReader(addHeaders: false, recordAmount: 10),
                new CustomCsvReaderOptions()
            {
                ReadHeaders = false,
                Headers     = FakeCsvGenerator.GenerateRecordValues(-10)
            });

            var result = Enumerable.Range(0, 10).Select(i => csvReader.ReadRecord()).ToList();

            Assert.AreEqual(
                Enumerable.Range(0, 10).Select(i => FakeCsvGenerator.GenerateRecord(FakeCsvGenerator.GenerateRecordValues(-10), FakeCsvGenerator.GenerateRecordValues(i))).ToList(),
                result
                );
        }
        public void ReadRecord_HeadersAmountNotEqualValueAmount_ThrowsException()
        {
            var csvReader = new CustomCsvReader(FakeCsvGenerator.GenerateNotNormalizedTextReader(addHeaders: true));

            Assert.Catch(() =>
            {
                var results = Enumerable.Range(0, FakeCsvGenerator.magicNumber).Select(i => csvReader.ReadRecord()).ToList();
            });
        }
        public void ReadRecord_ReadingMoreThanExist_ReturnsNull()
        {
            var csvReader = new CustomCsvReader(FakeCsvGenerator.GenerateGoodTextReader(recordAmount: 4, addHeaders: true));

            IList <IDictionary <string, string> > records = Enumerable.Range(0, 5).Select(index => csvReader.ReadRecord()).ToList();

            Assert.IsNull(records[4]);
        }