Exemple #1
0
        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]);
        }
Exemple #2
0
        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}");
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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!");
        }
Exemple #5
0
        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]);
        }
Exemple #6
0
        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;
    }
Exemple #9
0
 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);
            }
        }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
        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);
            }
        }
Exemple #13
0
        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!");
        }
Exemple #14
0
        [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);
            }
        }
Exemple #16
0
        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));
        }
Exemple #17
0
        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]);
        }