Пример #1
0
        static void TestCsvFormatters()
        {
            var action = new Action(() =>
            {
                var test01FilePath = Runtime.GetDesktopFilePath("csv-writer-test-01.csv");
                var test02FilePath = Runtime.GetDesktopFilePath("csv-witer-test-02.csv");

                var generatedRecords = SampleCsvRecord.CreateSampleSet(100);
                $"Generated {generatedRecords.Count} sample records.".Info(nameof(TestCsvFormatters));

                var savedRecordCount = CsvWriter.SaveRecords(generatedRecords, test01FilePath);
                $"Saved {savedRecordCount} records (including header) to file: {Path.GetFileName(test01FilePath)}."
                .Info(nameof(TestCsvFormatters));

                var loadedRecords = CsvReader.LoadRecords <SampleCsvRecord>(test01FilePath);
                $"Loaded {loadedRecords.Count} records from file: {Path.GetFileName(test01FilePath)}.".Info(
                    nameof(TestCsvFormatters));

                savedRecordCount = CsvWriter.SaveRecords(generatedRecords, test02FilePath);
                $"Saved {savedRecordCount} records (including header) to file: {Path.GetFileName(test02FilePath)}."
                .Info(nameof(TestCsvFormatters));

                var sourceObject     = loadedRecords[generatedRecords.Count / 2];
                var targetObject     = new SampleCopyTarget();
                var copiedProperties = sourceObject.CopyPropertiesTo(targetObject);
                $"{nameof(Extensions.CopyPropertiesTo)} method copied {copiedProperties} properties from one object to another"
                .Info(nameof(TestCsvFormatters));
            });

            var elapsed = action.Benchmark();

            $"Elapsed: {Math.Round(elapsed.TotalMilliseconds, 3)} milliseconds".Trace();
        }
Пример #2
0
        public void TempFileFilled_SetStreamLengthToZero()
        {
            var tempFile         = Path.GetTempFileName();
            var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows);

            var dictionaryheaders = new Dictionary <string, string>
            {
                { "AccessDate", "20171107" },
                { "AlternateId", "1" },
                { "CreationDate", "20171107" },
                { "Description", "Sr. Software Engineer" },
                { "Id", "0001" },
                { "IsValidated", "true" },
                { "Name", "Alexey Turpalov" },
                { "Score", "1245F" },
                { "ValidationResult", "true" }
            };

            var stringHeaders = dictionaryheaders.Select(k => k.Key).ToList();

            using (var stream = File.OpenWrite(tempFile))
            {
                using (var writer = new CsvWriter(stream))
                {
                    writer.WriteHeadings(dictionaryheaders);
                    writer.WriteObjects(stringHeaders);
                }
            }

            CsvWriter.SaveRecords(generatedRecords, tempFile);

            var valuesInFile = CsvReader.LoadRecords <SampleCsvRecord>(tempFile);

            Assert.AreEqual(generatedRecords.Count, valuesInFile.Count, "Same length");
        }
Пример #3
0
            public static List <SampleCsvRecord> CreateSampleSet(int size)
            {
                var result = new List <SampleCsvRecord>();
                var random = new Random();

                for (var i = 0; i < size; i++)
                {
                    var descriptionLength = random.Next(5, RandomWords.Length);
                    var descriptionSb     = new StringBuilder();
                    for (var wi = 0; wi < descriptionLength; wi++)
                    {
                        descriptionSb.Append(
                            $"{RandomWords[random.Next(0, RandomWords.Length - 1)]} ");
                    }

                    var record = new SampleCsvRecord
                    {
                        AccessDate       = random.NextDouble() > 0.5d ? DateTime.Now : new DateTime?(),
                        AlternateId      = random.NextDouble() > 0.5d ? random.Next(10, 9999999) : new int?(),
                        CreationDate     = random.NextDouble() > 0.5d ? DateTime.Now : DateTime.MinValue,
                        Description      = descriptionSb.ToString(),
                        Id               = i,
                        IsValidated      = random.NextDouble() > 0.5d,
                        Name             = RandomWords[random.Next(0, RandomWords.Length - 1)],
                        Score            = Convert.ToSingle(random.NextDouble() * random.Next(10, 1000)),
                        ValidationResult = random.NextDouble() > 0.5d
                    };

                    result.Add(record);
                }

                return(result);
            }
Пример #4
0
        public void ChangeSeparator()
        {
            var stringHeaders = new[]
            {
                "Id", "AlternateId", "Name", "Description", "IsValidated", "ValidationResult", "Score", "CreationDate",
                "AccessDate",
            };

            var stringHeadersOutput = string.Join("#", stringHeaders.Select(x => x.Humanize()));

            var objHeaders = new SampleCsvRecord();

            using var stream = new MemoryStream();
            using var writer = new CsvWriter(stream)
                  {
                      SeparatorCharacter = '#'
                  };

            writer.WriteHeadings(objHeaders);

            stream.Position = 0;
            var sr     = new StreamReader(stream);
            var value  = sr.ReadToEnd();
            var values = value.Split('#');

            Assert.AreEqual(stringHeadersOutput, value.Trim());
            Assert.AreEqual(stringHeaders.Length, values.Length);
        }
Пример #5
0
        public void WithNullList_Invalid()
        {
            var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows);

            generatedRecords.Add(null);

            Assert.Throws <ArgumentNullException>(() => CsvWriter.SaveRecords(generatedRecords, new MemoryStream()));
        }
Пример #6
0
        public void Strings_ReturnsAreEqual()
        {
            var strings = SampleCsvRecord.SampleStringList();

            using var stream = new MemoryStream();
            using var writer = new CsvWriter(stream);
            writer.WriteObjects(strings);

            Assert.AreEqual((int)writer.Count, strings.Count);
        }
Пример #7
0
        public void WithObjectList_Valid()
        {
            var tempFile         = Path.GetTempFileName();
            var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows);

            CsvWriter.SaveRecords(generatedRecords, tempFile);

            var valuesInFile = CsvReader.LoadRecords <SampleCsvRecord>(tempFile);

            Assert.AreEqual(generatedRecords.Count, valuesInFile.Count, "Same length");
            Assert.AreEqual(generatedRecords[0].Name, valuesInFile[0].Name, "Same first name");
        }
Пример #8
0
        public void WriteObjectTest()
        {
            var tempFile         = Path.GetTempFileName();
            var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows);

            CsvWriter.SaveRecords(generatedRecords, tempFile);
            CsvReader.LoadRecords <SampleCsvRecord>(tempFile);

            generatedRecords.Add(null);

            Assert.Throws <ArgumentNullException>(() =>
            {
                CsvWriter.SaveRecords(generatedRecords, tempFile);
            });
        }
Пример #9
0
        public void WriteObjectDynamicObjectTest()
        {
            var tempFile         = Path.GetTempFileName();
            var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows);

            CsvWriter.SaveRecords(generatedRecords, tempFile);
            var loadedRecords = CsvReader.LoadRecords <SampleCsvRecord>(tempFile);

            dynamic item = SampleCsvRecord.GetItem();

            generatedRecords.Add(item);

            CsvWriter.SaveRecords(generatedRecords, tempFile);
            var newloadedRecords = CsvReader.LoadRecords <SampleCsvRecord>(tempFile);

            Assert.AreNotEqual(loadedRecords, newloadedRecords);
        }
Пример #10
0
        public void WriteStringsTest()
        {
            var strings = SampleCsvRecord.SampleStringList();

            using (var stream = new MemoryStream())
            {
                if (stream.Length > 0)
                {
                    stream.SetLength(0);
                }

                using (var writer = new CsvWriter(stream))
                {
                    writer.WriteObjects(strings);

                    Assert.AreEqual((int)writer.Count, strings.Count);
                }
            }
        }