コード例 #1
0
        public void Separator_Set_ValueIsSet()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Separator = ";";

            Assert.That(descriptor.Separator, Is.EqualTo(";"));
        }
コード例 #2
0
        public void Separator_Set_ChangeIsNotified()
        {
            var descriptor = new CsvDescriptor();
            var counter    = new PropertyChangedCounter(descriptor);

            descriptor.Separator = ";";

            Assert.That(counter.GetCount(nameof(descriptor.Separator)), Is.EqualTo(1));
        }
コード例 #3
0
        public void Validate_IsValid_DoesNotThrows()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "dummy";
            descriptor.Separator = ";";
            descriptor.Columns.Add(new FormatColumn("c1", typeof(double), "0.00"));

            RecursiveValidator.Validate(descriptor);
        }
コード例 #4
0
        public void Validate_ColumnsEmpty_Throws()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "dummy";
            descriptor.Separator = ";";
            descriptor.Columns.Clear();

            var ex = Assert.Throws <ValidationException>(() => RecursiveValidator.Validate(descriptor));

            Assert.That(ex.Message, Does.Contain("Columns must not be empty"));
        }
コード例 #5
0
        public void Validate_SeparatorNull_Throws()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "dummy";
            descriptor.Separator = null;
            descriptor.Columns.Add(new FormatColumn("c1", typeof(double), "0.00"));

            var ex = Assert.Throws <ValidationException>(() => RecursiveValidator.Validate(descriptor));

            Assert.That(ex.Message, Does.Contain("Separator field is required"));
        }
コード例 #6
0
        public void Clone_WhenCalled_AllMembersAreCloned()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "dummy";
            descriptor.Separator = ";";
            descriptor.Columns.Add(new FormatColumn("c1", typeof(double), "0.00"));

            var clone = FigureDescriptorFactory.Clone(descriptor);

            Assert.That(clone.Separator, Is.EqualTo(";"));

            Assert.That(clone.Columns[0].Name, Is.EqualTo("c1"));
        }
コード例 #7
0
ファイル: DataSourceTests.cs プロジェクト: bg0jr/RaynMaker
        public void Validate_IsValid_DoesNotThrows()
        {
            var dataSource = new DataSource();

            dataSource.Vendor       = "vendor";
            dataSource.Name         = "name";
            dataSource.DocumentType = DocumentType.Html;
            dataSource.Location     = new DocumentLocator(new Request("http://test1.org"));

            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "dummy.csv";
            descriptor.Separator = ";";
            descriptor.Columns.Add(new FormatColumn("c1", typeof(double), "0.00"));
            dataSource.Figures.Add(descriptor);

            RecursiveValidator.Validate(dataSource);
        }
コード例 #8
0
ファイル: TextParser.cs プロジェクト: bg0jr/RaynMaker
        public DataTable ExtractTable()
        {
            SeparatorSeriesDescriptor separatorSeriesDescriptor = myDescriptor as SeparatorSeriesDescriptor;
            CsvDescriptor             csvDescriptor             = myDescriptor as CsvDescriptor;

            if (csvDescriptor != null)
            {
                DataTable result = CsvReader.Read(myDocument.Location.LocalPath, csvDescriptor.Separator);
                return(TableFormatter.ToFormattedTable(csvDescriptor, result));
            }
            else if (separatorSeriesDescriptor != null)
            {
                DataTable result = CsvReader.Read(myDocument.Location.LocalPath, separatorSeriesDescriptor.Separator);
                return(TableFormatter.ToFormattedTable(separatorSeriesDescriptor, result));
            }
            else
            {
                throw new NotSupportedException("Format not supported for text files: " + myDescriptor.GetType());
            }
        }
コード例 #9
0
        public void GetTable()
        {
            var descriptor = new CsvDescriptor();

            descriptor.Figure    = "HistoricalPrices";
            descriptor.Separator = ";";
            descriptor.SkipColumns.Add(1);
            descriptor.SkipRows.Add(0);
            descriptor.Columns.Add(new FormatColumn("Date", typeof(DateTime)));
            descriptor.Columns.Add(new FormatColumn("High", typeof(double), "000,000.00"));
            descriptor.Columns.Add(new FormatColumn("Low", typeof(double), "000,000.00"));
            descriptor.Columns.Add(new FormatColumn("Open", typeof(double), "000,000.00"));
            descriptor.Columns.Add(new FormatColumn("Close", typeof(double), "000,000.00"));

            var doc    = LoadDocument <TextDocument>("Csv", "Prices.csv");
            var parser = DocumentProcessingFactory.CreateParser(doc, descriptor);
            var table  = parser.ExtractTable();

            Assert.That(table.Rows.Count, Is.EqualTo(3));
            Assert.That(table.Rows[0]["Date"], Is.EqualTo(DateTime.Parse("01.01.2016")));
        }
コード例 #10
0
ファイル: MiscCsvTests.cs プロジェクト: azavea/net-dao-csv
        public void TestWriteCsvWithQuotes()
        {
            StringWriter writer = new StringWriter();

            // This is testing to verify the CsvDescriptor constructor that takes a
            // Writer and a CVSQuoteLevel.
            CsvTestObj testObj1 = new CsvTestObj();
            CheckedDictionary<string, object> testDict1 = new CheckedDictionary<string, object>();
            testObj1.One = 50;
            testObj1.Two = -1.0;
            testObj1.Three = "Yo";
            testObj1.Four = new DateTime(2001, 1, 1, 1, 1, 1);
            testObj1.Five = null;
            testDict1["One"] = testObj1.One;
            testDict1["Two"] = testObj1.Two;
            testDict1["Three"] = testObj1.Three;
            testDict1["Four"] = testObj1.Four;
            testDict1["Five"] = testObj1.Five;

            CsvTestObj testObj2 = new CsvTestObj();
            CheckedDictionary<string, object> testDict2 = new CheckedDictionary<string, object>();
            testObj2.One = int.MaxValue;
            testObj2.Two = double.MinValue;
            testObj2.Three = null;
            testObj2.Four = DateTime.MinValue;
            testObj2.Five = "";
            testDict2["One"] = testObj2.One;
            testDict2["Two"] = testObj2.Two;
            testDict2["Three"] = testObj2.Three;
            testDict2["Four"] = testObj2.Four;
            testDict2["Five"] = testObj2.Five;

            ClassMapping mapping1 = MakeMapping("n/a", "WriteOne", true);
            CsvDescriptor desc1 = new CsvDescriptor(writer, CsvQuoteLevel.QuoteStrings);
            DictionaryDao dao1 = new DictionaryDao(desc1, mapping1);
            dao1.Insert(testDict1);
            dao1.Insert(testDict2);

            string csv = writer.ToString();
            Assert.IsNotEmpty(csv, "The writer should not return an empty string. ");
        }
コード例 #11
0
ファイル: MiscCsvTests.cs プロジェクト: azavea/net-dao-csv
        public void TestWriteCsv()
        {
            CsvTestObj testObj1 = new CsvTestObj();
            CheckedDictionary<string, object> testDict1 = new CheckedDictionary<string, object>();
            testObj1.One = 50;
            testObj1.Two = -1.0;
            testObj1.Three = "Yo";
            testObj1.Four = new DateTime(2001, 1, 1, 1, 1, 1);
            testObj1.Five = null;
            testDict1["One"] = testObj1.One;
            testDict1["Two"] = testObj1.Two;
            testDict1["Three"] = testObj1.Three;
            testDict1["Four"] = testObj1.Four;
            testDict1["Five"] = testObj1.Five;

            CsvTestObj testObj2 = new CsvTestObj();
            CheckedDictionary<string, object> testDict2 = new CheckedDictionary<string, object>();
            testObj2.One = int.MaxValue;
            testObj2.Two = double.MinValue;
            testObj2.Three = null;
            testObj2.Four = DateTime.MinValue;
            testObj2.Five = "";
            testDict2["One"] = testObj2.One;
            testDict2["Two"] = testObj2.Two;
            testDict2["Three"] = testObj2.Three;
            testDict2["Four"] = testObj2.Four;
            testDict2["Five"] = testObj2.Five;

            ClassMapping mapping1 = MakeMapping("n/a", "WriteOne", true);
            CsvDescriptor desc1 = new CsvDescriptor("..\\..\\Tests");
            DictionaryDao dao1 = new DictionaryDao(desc1, mapping1);
            dao1.Truncate();
            dao1.Insert(testDict1);
            dao1.Insert(testDict2);

            ClassMapping mapping2 = MakeMapping("Azavea.Open.DAO.CSV.Tests.CsvTestObj,Azavea.Open.DAO.CSV", "Doesn'tMatter", true);
            CsvDescriptor desc2 = new CsvDescriptor(CsvConnectionType.FileName,
                                                    "..\\..\\Tests\\WriteTwo.csv");
            FastDAO<CsvTestObj> dao2 = new FastDAO<CsvTestObj>(desc2, mapping2);
            dao2.Truncate();
            dao2.Insert(testObj1);
            dao2.Insert(testObj2);

            ClassMapping mapping3 = MakeMapping("n/a", "AlsoDoesn'tMatter", true);
            using (StreamWriter sw = new StreamWriter("..\\..\\Tests\\WriteThree.csv", false))
            {
                CsvDescriptor desc3 = new CsvDescriptor(sw);
                DictionaryDao dao3 = new DictionaryDao(desc3, mapping3);
                // Can't truncate this one.
                dao3.Insert(testDict1);
                dao3.Insert(testDict2);
            }

            ClassMapping mapping4 = MakeMapping("n/a", "WriteFour", false);
            CsvDescriptor desc4 = new CsvDescriptor("..\\..\\Tests");
            DictionaryDao dao4 = new DictionaryDao(desc4, mapping4);
            dao4.Truncate();
            dao4.Insert(testDict1);
            dao4.Insert(testDict2);

            ClassMapping mapping5 = MakeMapping("Azavea.Open.DAO.CSV.Tests.CsvTestObj,Azavea.Open.DAO.CSV", "Doesn'tMatter", false);
            CsvDescriptor desc5 = new CsvDescriptor(CsvConnectionType.FileName,
                                                    "..\\..\\Tests\\WriteFive.csv");
            FastDAO<CsvTestObj> dao5 = new FastDAO<CsvTestObj>(desc5, mapping5);
            dao5.Truncate();
            dao5.Insert(testObj1);
            dao5.Insert(testObj2);

            ClassMapping mapping6 = MakeMapping("n/a", "AlsoDoesn'tMatter", false);
            using (StreamWriter sw = new StreamWriter("..\\..\\Tests\\WriteSix.csv", false))
            {
                CsvDescriptor desc6 = new CsvDescriptor(sw);
                DictionaryDao dao6 = new DictionaryDao(desc6, mapping6);
                // Can't truncate this one.
                dao6.Insert(testDict1);
                dao6.Insert(testDict2);
            }

            // Now, assert they are all correct.  1, 2, and 3 should be the same (they have headers)
            // and 4, 5, and 6 should be the same (without headers).
            AssertFileContentsSame("..\\..\\Tests\\WriteOne.csv", "..\\..\\Tests\\WriteTwo.csv");
            AssertFileContentsSame("..\\..\\Tests\\WriteOne.csv", "..\\..\\Tests\\WriteThree.csv");
            AssertFileGreater("..\\..\\Tests\\WriteOne.csv", "..\\..\\Tests\\WriteFour.csv");
            AssertFileContentsSame("..\\..\\Tests\\WriteFour.csv", "..\\..\\Tests\\WriteFive.csv");
            AssertFileContentsSame("..\\..\\Tests\\WriteFour.csv", "..\\..\\Tests\\WriteFive.csv");
        }