コード例 #1
0
        public void TestConvertShouldReturnCorrectXml()
        {
            //Arrange
            var expectedResult = new XElement("Root",
                                              new XElement("Line1",
                                                           new XElement("name", "Dave"),
                                                           new XElement("address",
                                                                        new XElement("line1", "Street"),
                                                                        new XElement("line2", "Town")
                                                                        )
                                                           )).ToString();

            var testData = new List <string>
            {
                "name,address_line1,address_line2",
                "Dave,Street,Town"
            }.AsQueryable();

            var sut = new CsvToXmlConverter();

            //Act
            var result = sut.Convert(testData).ToString();

            //Assert
            Assert.Equal(expectedResult, result);
        }
コード例 #2
0
        public static void Main(string[] args)
        {
            var opts   = new Options();
            var result = Parser.Default.ParseArguments(args, opts);

            if (!result)
            {
                Console.WriteLine(HelpText.AutoBuild(opts));
                return;
            }

            var settings = new CsvToXmlSettings()
            {
                RootNodeName  = opts.RootName,
                EntryNodeName = opts.EntryName,
                Header        = opts.HasHeader,
                Separator     = opts.Separator
            };

            if (opts.HeaderToKey != null)
            {
                settings.SetHeaderToKeyMappings(opts.HeaderToKey.ToArray());
            }

            var converter = new CsvToXmlConverter(opts.Input, settings);

            var ret = converter.Convert();

            ret.Save(opts.Output);
        }
コード例 #3
0
        public void TestCorrectFilePathIsRequestedToBeReadFromFileReaderByConverter()
        {
            var mockWriter = CreateBasicFileWriterAcceptingAnyParametersAndReturningDummySuccessMessage();
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var converter  = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Somewhere\change.csv");
            mockReader.Verify(mock => mock.ReadDataFromFile(@"C:\Somewhere\change.csv"), Times.Exactly(1));
        }
コード例 #4
0
        public void TestConvertedFileIsPassedToFileWriterWithCorrectName()
        {
            var mockWriter = CreateBasicFileWriterAcceptingAnyParametersAndReturningDummySuccessMessage();
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var converter  = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Somewhere\change.csv");
            mockWriter.Verify(mock =>
                              mock.SaveDataToFile(It.IsAny <MemoryStream>(), @"C:\Somewhere\converted_change.xml"), Times.Exactly(1));
        }
コード例 #5
0
        public void TestOutputMessageFromFileWriterIsPassedUpThoughConverterToCallerInResult()
        {
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var mockWriter = new Mock <IFileWriter>();

            mockWriter.Setup(mock => mock.SaveDataToFile(It.IsAny <MemoryStream>(), It.IsAny <string>())).Returns("I am an error message");
            var converter = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);
            var result    = converter.ConvertFile(@"C:\Somehere\aFile\mightbe.csv");

            Assert.AreEqual("I am an error message", result.ResultMessage);
        }
コード例 #6
0
        public void TestColumnValuesAreInCorrectElementTagsAfterConversion()
        {
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var mockWriter = new Mock <IFileWriter>();

            mockWriter.Setup(mock => mock.SaveDataToFile(It.IsAny <MemoryStream>(), It.IsAny <string>()))
            .Returns("Success")
            .Callback((MemoryStream memoryStream, string s) => TestValuesOfColumnElementsInStream(memoryStream));
            var converter = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Any\Old\file.txt");
        }
コード例 #7
0
        public void TestEachRecordsRootElementIsBasedOnFileName()
        {
            var expectedName = "element";
            var mockWriter   = new Mock <IFileWriter>();

            mockWriter.Setup(mock => mock.SaveDataToFile(It.IsAny <MemoryStream>(), It.IsAny <string>()))
            .Returns("Success")
            .Callback((MemoryStream memoryStream, string s) => TestElementStartAndEndTagsAreBasedOnFileName(memoryStream, expectedName));
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var converter  = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Somewhere\else\" + expectedName + ".csv");
        }
コード例 #8
0
        public void TestMissingFileErrorIsReportedByConverter()
        {
            var testFileName = @"C:\Somewhere\strange.csv";
            var mockWriter   = CreateBasicFileWriterAcceptingAnyParametersAndReturningDummySuccessMessage();
            var mockReader   = new Mock <IStandardFileReader>();

            mockReader.Setup(mock => mock.ReadDataFromFile(It.IsAny <string>())).Throws(new FileNotFoundException("not found"));
            var converter = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);
            var result    = converter.ConvertFile(testFileName);

            Assert.AreEqual(false, result.Success);
            Assert.AreEqual(string.Format(Resources.FileNotFoundMessage, testFileName), result.ResultMessage);
        }
コード例 #9
0
        public void TestContentOfConvertedFileIsCorrect()
        {
            var fileName   = "file";
            var mockReader = CreateFileReaderAcceptingAllPathAndReturningDummyContent();
            var mockWriter = new Mock <IFileWriter>();

            mockWriter.Setup(mock => mock.SaveDataToFile(It.IsAny <MemoryStream>(), It.IsAny <string>()))
            .Returns("Success")
            .Callback((MemoryStream memoryStream, string s) => TestFullFileContentIsAsExpected(memoryStream, fileName));
            var converter = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Any\Old\" + fileName + ".txt");
        }
コード例 #10
0
        public void TestCsvFileWithNoDataIsHandledProperly()
        {
            var path       = @"C:\Pathto\anempty\file.csv";
            var mockWriter = CreateBasicFileWriterAcceptingAnyParametersAndReturningDummySuccessMessage();
            var mockReader = new Mock <IStandardFileReader>();

            mockReader.Setup(mock => mock.ReadDataFromFile(It.IsAny <string>())).Returns(new string[0]);
            var converter       = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);
            var result          = converter.ConvertFile(path);
            var expectedMessage = string.Format(Resources.NotDataInFileToConvert, path);

            Assert.IsFalse(result.Success);
            Assert.AreEqual(expectedMessage, result.ResultMessage);
        }
コード例 #11
0
        public void TestEachRowIsRepresentedAsASeparateElement()
        {
            var testFileName = "testFile";
            //setup mock writer
            var mockWriter = new Mock <IFileWriter>();

            mockWriter.Setup(mock => mock.SaveDataToFile(It.IsAny <MemoryStream>(), It.IsAny <string>()))
            .Returns("Success")
            .Callback((MemoryStream memoryStream, string s) => TestSteamContentForRowsAsElements(memoryStream, testFileName));
            //setup mock reader
            var mockReader = new Mock <IStandardFileReader>();

            mockReader.Setup(mock => mock.ReadDataFromFile(It.IsAny <string>()))
            .Returns(new[] { "col1,col2", "item1.1,item1.2", "item1.1,item1.2" });
            var converter = new CsvToXmlConverter(mockReader.Object, mockWriter.Object);

            converter.ConvertFile(@"C:\Somewhere\else\" + testFileName + ".csv");
        }
コード例 #12
0
        private static void DetermineRequiredActionFromFileExtenstion(string path, string extension)
        {
            IConversionResult result;

            if (extension == "csv")
            {
                var converter = new CsvToXmlConverter(new StandardFileReader(), new FileWriter());
                result = converter.ConvertFile(path);
            }
            else
            {
                var convrter = new XmlToCsvConverter(new FileWriter(), new XMLFileReader(), new XmlValidator());
                result = convrter.ConvertFile(path);
            }
            var completeStatusMessage = result.Success ? Resources.SuccessfulConversionMessage : Resources.FailedConvrsionMessage;

            Console.WriteLine(completeStatusMessage);
            Console.WriteLine(result.ResultMessage);
        }