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(); }
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"); }
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); }
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); }
public void WithNullList_Invalid() { var generatedRecords = SampleCsvRecord.CreateSampleSet(TotalRows); generatedRecords.Add(null); Assert.Throws <ArgumentNullException>(() => CsvWriter.SaveRecords(generatedRecords, new MemoryStream())); }
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); }
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"); }
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); }); }
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); }
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); } } }