public void Convert_WhenSpecifiedTheClassPropertyAttributesCanOverrideClassAttributes_PropertiesTakePrecedence( bool bool1Input, string bool1ExpectedOutput, bool bool2Input, string bool2ExpectedOutput, bool?bool3Input, string bool3ExpectedOutput, bool bool4Input, string bool4ExpectedOutput, bool bool5Input, string bool5ExpectedOutput) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <CsvConverterBooleanWriteData3>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new CsvConverterBooleanWriteData3() { Bool1 = bool1Input, Bool2 = bool2Input, Bool3 = bool3Input, Bool4 = bool4Input, Bool5 = bool5Input }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); var dataRow = rowWriterMock.Rows[1]; Assert.AreEqual(bool1ExpectedOutput, dataRow[0]); Assert.AreEqual(bool2ExpectedOutput, dataRow[1]); Assert.AreEqual(bool3ExpectedOutput, dataRow[2]); Assert.AreEqual(bool4ExpectedOutput, dataRow[3]); Assert.AreEqual(bool5ExpectedOutput, dataRow[4]); }
public void Convert_WhenSpecifiedTheClassPropertyAttributesCanOverrideClassAttributes_PropertiesTakePrecedence( int inputData1, string expectedData1, int inputData2, string expectedData2, int?inputData3, string expectedData3, int inputData4, string expectedData4) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <CsvConverterNumberIntWriteData3>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new CsvConverterNumberIntWriteData3() { Num1 = inputData1, Num2 = inputData2, Num3 = inputData3, Num4 = inputData4 }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); var dataRow = rowWriterMock.Rows[1]; var index = 0; Assert.AreEqual(expectedData1, dataRow[index++], $"Problem with input {index} -> {inputData1}"); Assert.AreEqual(expectedData2, dataRow[index++], $"Problem with input {index} -> {inputData2}"); Assert.AreEqual(expectedData3, dataRow[index++], $"Problem with input {index} -> {inputData3}"); }
public async Task WritesWithCustomAttributeConvertersAsync() { var writerService = new CsvWriterService(); var attributes = new List <CustomAttribute>(); for (var i = 0; i < 3; i++) { attributes.Add(new CustomAttribute { Value = $"Attribute{i + 1}" }); } var operations = new List <Operation>(); for (var i = 0; i < 5; i++) { var operation = new Operation { Id = i + 1, Name = $"Operation {i + 1}", Enabled = true }; for (var j = 0; j < 5; j++) { operation.Attributes[$"Attribute{j + 1}"] = $"Value {j + 1}"; } operations.Add(operation); } var temporaryFileContext = new TemporaryFilesContext($"{nameof(CsvWriterServiceFacts)}_{nameof(WritesWithCustomAttributeConvertersAsync)}"); var fileName = temporaryFileContext.GetFile("operations.csv"); var classMap = new OperationMap(); classMap.Initialize(attributes.Select(x => x.Value)); var csvContext = new CsvContext <Operation> { ClassMap = classMap }; using (var stream = File.Create(fileName)) { using (var textWriter = new StreamWriter(stream)) { var csvWriter = new CsvWriter(textWriter); csvWriter.Configuration.RegisterClassMap(classMap); csvWriter.WriteRecords(operations); } } await writerService.WriteRecordsAsync(operations, fileName, csvContext); Approvals.VerifyFile(fileName); }
public void Convert_WhenSpecifiedTheClassPropertyAttributesCanOverrideClassAttributes_PropertiesTakePrecedence( int year, int month, int day, int hour, int minute, int second, string expectedStringRow1, string expectedStringRow2, string expectedStringRow3) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <CsvConverterDateTimeWriteData3>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new CsvConverterDateTimeWriteData3() { Date1 = new DateTime(year, month, day, hour, minute, second), Date2 = new DateTime(year, month, day, hour, minute, second), Date3 = new DateTime(year, month, day, hour, minute, second) }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(expectedStringRow1, rowWriterMock.LastRow[0], "Order column problem for Date1"); Assert.AreEqual(expectedStringRow2, rowWriterMock.LastRow[1], "Order column problem for Date2!"); Assert.AreEqual(expectedStringRow3, rowWriterMock.LastRow[2], "Order column problem for Date3!"); }
public void Convert_WhenSpecifiedOnTheClass_BooleansAreAllConvertedTheSameWay( bool bool1Input, string bool1ExpectedOutput, bool bool2Input, string bool2ExpectedOutput, bool?bool3Input, string bool3ExpectedOutput, bool bool4Input, string bool4ExpectedOutput, bool bool5Input, string bool5ExpectedOutput) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <CsvConverterBooleanWriteData2>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new CsvConverterBooleanWriteData2() { Bool1 = bool1Input, Bool2 = bool2Input, Bool3 = bool3Input, Bool4 = bool4Input, Bool5 = bool5Input }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); var dataRow = rowWriterMock.Rows[1]; Assert.AreEqual(bool1ExpectedOutput, dataRow[0]); Assert.AreEqual(bool2ExpectedOutput, dataRow[1]); Assert.AreEqual(bool3ExpectedOutput, dataRow[2]); Assert.AreEqual(bool4ExpectedOutput, dataRow[3]); Assert.AreEqual(bool5ExpectedOutput, dataRow[4]); }
public void Convert_WhenSpecifiedOnEachProperty_IntsAreConvertedAccordingToAttributes( int inputData1, string expectedData1, int inputData2, string expectedData2, int?inputData3, string expectedData3, int inputData4, string expectedData4) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <CsvConverterNumberIntWriteData1>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new CsvConverterNumberIntWriteData1() { Num1 = inputData1, Num2 = inputData2, Num3 = inputData3, Num4 = inputData4 }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); var dataRow = rowWriterMock.Rows[1]; var index = 0; Assert.AreEqual(expectedData1, dataRow[index++], $"Problem with input {index} -> {inputData1}"); Assert.AreEqual(expectedData2, dataRow[index++], $"Problem with input {index} -> {inputData2}"); Assert.AreEqual(expectedData3, dataRow[index++], $"Problem with input {index} -> {inputData3}"); // Note: Windows 7 and Windows 10 format percentages in different ways so I'm just remove // the space between the number and percentage sign so that I can test for a proper conversion. Assert.AreEqual(expectedData4, dataRow[index++].Replace(" ", ""), $"Problem with input {index} -> {inputData4}"); }
private static void WriteItems(List <TestData> items, string fileName) { using (var fs = File.Create(fileName)) using (var sw = new StreamWriter(fs, Encoding.Default)) { var writerService = new CsvWriterService <TestData>(sw); foreach (var item in items) { writerService.WriteRecord(item); } } }
/** * Steve Callaghan ([email protected]) * Created: 2017/09 (September, 2017) * https://github.com/Patchthesock/GSRealTimeTestTool */ public App( Settings settings, RtQosService rtQosService, GuiController guiController, SparkRtService sparkRtService, CsvWriterService csvWriterService) { _settings = settings; _rtQosService = rtQosService; _guiController = guiController; _sparkRtService = sparkRtService; _csvWriterService = csvWriterService; }
private static void WriteSquirrels(List <Squirrel> originalSquirrelList, string squirrelFileName) { using (var fs = File.Create(squirrelFileName)) using (var sw = new StreamWriter(fs)) { fs.Seek(0, SeekOrigin.Begin); ICsvWriterService <Squirrel> writer = new CsvWriterService <Squirrel>(sw); writer.Configuration.HasHeaderRow = true; foreach (var squirrel in originalSquirrelList) { writer.WriteRecord(squirrel); } } }
private void CreateCsvButton_Click(object sender, RoutedEventArgs e) { try { var dialog = SaveFile(); if (dialog.ShowDialog() != true) { return; } Random rand = new Random(DateTime.Now.Second); int numberToCreate = rand.Next(10, 100); using (var fs = File.Create(dialog.FileName)) using (var sw = new StreamWriter(fs, Encoding.Default)) { var writerService = new CsvWriterService <Frog>(sw); writerService.Configuration.HasHeaderRow = false; for (int i = 0; i < numberToCreate; i++) { var newEmp = new Frog() { FirstName = $"First{rand.Next(1, 5000)}", LastName = $"Last{rand.Next(1, 5000)}", Age = rand.Next(5, 80), Color = PickRandomColor(rand.Next(1, 5)), AverageNumberOfSpots = rand.Next(5, 20) / 1.1m }; writerService.WriteRecord(newEmp); } } LogMessage($"Created {numberToCreate} frogs in {dialog.FileName}."); } catch (Exception ex) { LogError(ex); } }
private void CustomPreConverterCreateCsvButton_Click(object sender, RoutedEventArgs e) { try { var dialog = SaveFile(CustomPreConverterCSVFile.Text); if (dialog.ShowDialog() != true) { return; } Random rand = new Random(DateTime.Now.Second); int numberToCreate = rand.Next(10, 100); using (var fs = File.Create(dialog.FileName)) using (var sw = new StreamWriter(fs, Encoding.Default)) { ICsvWriterService <Car> service = new CsvWriterService <Car>(sw); for (int i = 0; i < numberToCreate; i++) { double currentValue = rand.Next(2000, 60000) / 1.1; var newCar = new Car() { Make = rand.Next(1, 100) > 50 ? $"M{rand.Next(1, 5000000)}" : "M", Model = rand.Next(1, 100) > 50 ? $"M{rand.Next(1, 5000000)}" : "M", Year = rand.Next(1995, 2018), PurchasePrice = (decimal)currentValue * 1.2m, CurrentValue = currentValue }; service.WriteRecord(newCar); } } LogMessage($"Created {numberToCreate} cars in {dialog.FileName}."); } catch (Exception ex) { LogError(ex); } }
private void CreateCsvButton_Click(object sender, RoutedEventArgs e) { try { var dialog = SaveFile(); if (dialog.ShowDialog() != true) { return; } Random rand = new Random(DateTime.Now.Second); int numberToCreate = rand.Next(10, 100); using (var fs = File.Create(dialog.FileName)) using (var sw = new StreamWriter(fs, Encoding.Default)) { var writerService = new CsvWriterService <Employee>(sw); for (int i = 0; i < numberToCreate; i++) { var newEmp = new Employee() { FirstName = $"First{rand.Next(1,5000)}", LastName = $"Last{rand.Next(1, 5000)}", Age = rand.Next(5, 80), PercentageBodyFat = rand.Next(1, 20) / 1.2m, AvgHeartRate = rand.Next(60, 80) / 1.1 }; writerService.WriteRecord(newEmp); } } LogMessage($"Created {numberToCreate} employees in {dialog.FileName}."); } catch (Exception ex) { LogError(ex); } }
public void WriterRecord_CanWriteDataInCorrectOrderWithNoHeaderRow_DataIsWritenCorrectlyToTheRowWriter( int order, int age, string name, string expectedOrder, string expectedAge, string expectedName) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <WriteNoHeaderTestsData1>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = false; var data = new WriteNoHeaderTestsData1() { Order = order, Age = age, Name = name }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(1, rowWriterMock.Rows.Count, "There should only be one row written!"); Assert.AreEqual(expectedName, rowWriterMock.LastRow[0], "Name column problem!"); Assert.AreEqual(expectedOrder, rowWriterMock.LastRow[1], "Order column problem!"); Assert.AreEqual(expectedAge, rowWriterMock.LastRow[2], "Age column problem!"); }
[DataRow(" moose ", "moose")] // 1st converter gets NO match and 2nd converter REMOVES spaces public void Convert_OrderMatters_FirstDoExactMatchAndThenRemoveSpaces( string animialTypeInput, string animialTypeExpectedOutput) { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <ClassLevelAttributeOrderWriteData2>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new ClassLevelAttributeOrderWriteData2() { AnimalType = animialTypeInput }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); // header row and then 1 data row (count of 2) var dataRow = rowWriterMock.Rows[1]; // first row below header row Assert.AreEqual(animialTypeExpectedOutput, dataRow[0]); }
private void CreateFileButton_Click(object sender, RoutedEventArgs e) { try { var dialog = SaveFile("c:\\temp\\Person.csv"); if (dialog.ShowDialog() != true) { return; } using (var fs = File.Create(dialog.FileName)) using (var sw = new StreamWriter(fs)) { ICsvWriterService <Person> writer = new CsvWriterService <Person>(sw); writer.WriteRecord(new Person() { FirstName = "Tom", LastName = "Yo", Age = 90 }); writer.WriteRecord(new Person() { FirstName = "Jame", LastName = "Adam", Age = 34 }); writer.WriteRecord(new Person() { FirstName = "Killroy", LastName = "Back", Age = 12 }); writer.WriteRecord(new Person() { FirstName = "James", LastName = "Madison", Age = 23 }); } } catch (Exception ex) { LogError(ex); } }
public void CanReadAndWriteData() { string fileName = GetTestFileNameAndPath(); var studentList = new List <Graduation>(); using (var fs = File.OpenRead(fileName)) using (var sr = new StreamReader(fs, Encoding.Default)) { var csv = new CsvReaderService <Graduation>(sr); csv.Configuration.HasHeaderRow = true; csv.Configuration.BlankRowsAreReturnedAsNull = true; while (csv.CanRead()) { studentList.Add(csv.GetRecord()); } } // Create a temp file string tempFileName = Path.Combine( Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + "Temp.csv"); using (var fs = File.Create(tempFileName)) using (var sw = new StreamWriter(fs, Encoding.Default)) { var service = new CsvWriterService <Graduation>(sw); service.Configuration.HasHeaderRow = true; foreach (var student in studentList) { service.WriteRecord(student); } } Assert.IsTrue(FilesAreEqual(fileName, tempFileName)); }
public void WriterRecord_CanWriteColumnInCorrectOrder_DataIsWritenCorrectlyToTheRowWriter() { // Arrange var rowWriterMock = new FakeRowWriter(); var classUnderTest = new CsvWriterService <WriteHeaderTestData1>(rowWriterMock); classUnderTest.Configuration.HasHeaderRow = true; var data = new WriteHeaderTestData1() { Order = 1, Age = 23, Name = "James" }; // Act classUnderTest.WriteRecord(data); // Assert Assert.AreEqual(2, rowWriterMock.Rows.Count); var headerRow = rowWriterMock.Rows[0]; Assert.AreEqual("Order", headerRow[0]); Assert.AreEqual("Age", headerRow[1]); Assert.AreEqual("Name", headerRow[2]); }