Exemplo n.º 1
0
        public void ParseTest()
        {
            const string quot = "\"";
            const string quot2 = quot + quot;
            const string ret = "\r\n";
            const string sep = ";";
            const string sep2 = ",";

            string[] data = { 
                "columnA" + sep,
                "columnB" + sep2,
                "columnC" + sep,
                "columnD" + sep2,
                "columnE" + ret,

                "  リンゴ " + sep2,
                "" + sep,
                (quot2 + "み" + quot2 + "かん").Enclose(quot) + sep2,
                ("バナ" + ret + "ナ").Enclose(quot) + sep,
                "  パイナップル  " + sep + ret,

                "" + sep,
                "" + sep2,
                "" + sep2,
                "" + sep,
                "" + ret,

                "  ABCD  ".Enclose(quot) + sep,
                ("E" + sep + "FG").Enclose(quot) + sep2,
                ("HIJ" + ret + "K" + ret + ret + "LMN").Enclose(quot) + sep,
                "OPQR"+sep2,
                ""
            };
            var testData = data.ConcatWith("");
            Console.WriteLine(testData);
            Console.WriteLine("");

            using (var reader = new System.IO.StringReader(testData))
            {
                var target = new XsvData<XsvDataRow>(new[] { sep, sep2 });
                target.Read(reader);
                foreach (var row in target.Rows)
                {
                    Console.WriteLine(row.ToString() + " <<");
                }
                Console.WriteLine("");
                foreach (var row in target.Rows)
                {
                    Console.WriteLine(row.OutputFields(new[] { ":" }, ":") + " <<");
                }

                var sb = new StringBuilder();
                using (var writer = new StringWriter(sb))
                {
                    target.Write(writer);
                }
                Console.WriteLine("----------");
                Console.WriteLine(sb.ToString());
            }
        }
Exemplo n.º 2
0
        public void ReadCsvTest_inhelitedXsvDataRow()
        {
            var expected = new[] {
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H },
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H },
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H },
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T },
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H },
                new { 品番 = 0, 船種 = "不明", 品名 = "名無し", 税込価格 = -1, 本体価格 = -1, メーカー = Maker.UNKNOWN }
            };

            var target = new XsvData <ShipModelDataRow>(new[] { "," });

            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row.品番);
                Assert.AreEqual(x.exp.船種, x.row.船種);
                Assert.AreEqual(x.exp.品名, x.row.品名);
                Assert.AreEqual(x.exp.税込価格, x.row.税込価格);
                Assert.AreEqual(x.exp.本体価格, x.row.本体価格);
                Assert.AreEqual(x.exp.メーカー, x.row.メーカー);
            }
        }
Exemplo n.º 3
0
        public void ReadCsvTest_indexer()
        {
            var expected = new[] {
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H },
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H },
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H },
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T },
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H },
                new { 品番 = 429, 船種 = "駆逐艦", 品名 = "桜 さくら", 税込価格 = 630, 本体価格 = 600, メーカー = Maker.T }
            };

            var target = new XsvData(new XsvDataSettings()
            {
                Delimiters   = new[] { "," },
                HeaderExists = true
            });

            using (var reader = new System.IO.StringReader(data1))
            {
                target.Read(reader);
            }

            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row["品番"].AsInt32());
                Assert.AreEqual(x.exp.船種, x.row["船種"].AsString());
                Assert.AreEqual(x.exp.品名, x.row["品名"].AsString());
                Assert.AreEqual(x.exp.税込価格, x.row["税込価格"].AsInt32());
                Assert.AreEqual(x.exp.本体価格, x.row["本体価格"].AsInt32(System.Globalization.NumberStyles.Currency));
                Assert.AreEqual(x.exp.メーカー, x.row["メーカー"].AsEnum <Maker>());
            }
        }
Exemplo n.º 4
0
        public async Task <IEnumerable <RawBrew> > RetrieveRawAsync(string source)
        {
            if (string.IsNullOrEmpty(source))
            {
                return(Enumerable.Empty <RawBrew>());
            }
            var xsv     = new XsvData <RawBrew>(new[] { TsvDelimeter });
            var content = (await Try.ItAsync(async() => await source.GetStringAsync())) ?? string.Empty;

            using (var reader = new XsvReader(new StringReader(content))) await xsv.ReadAsync(reader, headerExists : true);
            return(xsv.Rows.ToList());
        }
Exemplo n.º 5
0
        public void EditColumnHeaderTest()
        {
            string expected = "品番,名前,本体価格,メーカー,品名" + Environment.NewLine
                              + "110,戦艦 比叡 ひえい,\"2,500\",H,比叡 ひえい" + Environment.NewLine
                              + "119,航空戦艦 伊勢 いせ,\"3,200\",H,伊勢 いせ" + Environment.NewLine
                              + "216,航空母艦 瑞鳳 ずいほう,\"2,000\",H,瑞鳳 ずいほう" + Environment.NewLine
                              + "320,軽巡洋艦 名取 なとり,\"1,300\",T,名取 なとり" + Environment.NewLine
                              + "334,重巡洋艦 那智 なち,\"1,800\",H,那智 なち" + Environment.NewLine
                              + "xxx,不明 名無し,xxx,xxx," + Environment.NewLine;

            var target = new XsvData <ShipModelDataRow>(new[] { "," });

            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            target.AddColumnHeader("名前");
            foreach (var row in target.Rows)
            {
                row["名前"] = new XsvField(row.船種 + " " + row.品名);
            }
            target.RemoveColumnHeader("税込価格");
            target.RemoveColumnHeader("船種");
            target.SwapColumnHeader("品名", "名前");
            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb))
            {
                target.Write(writer, ",", new XsvWriteSettings()
                {
                    OutputsHeader      = true,
                    SynchronisesColumn = true,
                    UpdatesField       = false
                });
            }
            Console.Write(sb.ToString());
            Assert.AreEqual(expected, sb.ToString());
        }
Exemplo n.º 6
0
        public void AddColumnHeaderTest()
        {
            var expected = new[] {
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H, 前 = "戦艦 比叡 ひえい", コメント = "" },
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H, 前 = "航空戦艦 伊勢 いせ", コメント = "" },
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H, 前 = "航空母艦 瑞鳳 ずいほう", コメント = "" },
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T, 前 = "軽巡洋艦 名取 なとり", コメント = "" },
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H, 前 = "重巡洋艦 那智 なち", コメント = "" },
                new { 品番 = 0, 船種 = "不明", 品名 = "名無し", 税込価格 = -1, 本体価格 = -1, メーカー = Maker.UNKNOWN, 前 = "不明 名無し", コメント = "" }
            };

            var target = new XsvData <ShipModelDataRow>(new[] { "," });

            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            target.AddColumnHeader("名前");
            target.AddColumnHeader("コメント");
            foreach (var row in target.Rows)
            {
                row["名前"] = new XsvField(row.船種 + " " + row.品名);
            }

            target.SynchronizeColumns();
            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row.品番);
                Assert.AreEqual(x.exp.船種, x.row.船種);
                Assert.AreEqual(x.exp.品名, x.row.品名);
                Assert.AreEqual(x.exp.税込価格, x.row.税込価格);
                Assert.AreEqual(x.exp.本体価格, x.row.本体価格);
                Assert.AreEqual(x.exp.メーカー, x.row.メーカー);
                Assert.AreEqual(x.exp.前, x.row["名前"].AsString());
                Assert.AreEqual(x.exp.コメント, x.row["コメント"].AsString());
            }
        }
Exemplo n.º 7
0
        public void EditColumnHeaderTest()
        {
            string expected = "品番,名前,本体価格,メーカー,品名" + Environment.NewLine
               + "110,戦艦 比叡 ひえい,\"2,500\",H,比叡 ひえい" + Environment.NewLine
               + "119,航空戦艦 伊勢 いせ,\"3,200\",H,伊勢 いせ" + Environment.NewLine
               + "216,航空母艦 瑞鳳 ずいほう,\"2,000\",H,瑞鳳 ずいほう" + Environment.NewLine
               + "320,軽巡洋艦 名取 なとり,\"1,300\",T,名取 なとり" + Environment.NewLine
               + "334,重巡洋艦 那智 なち,\"1,800\",H,那智 なち" + Environment.NewLine
               + "xxx,不明 名無し,xxx,xxx," + Environment.NewLine;

            var target = new XsvData<ShipModelDataRow>(new[] { "," });
            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            target.AddColumnHeader("名前");
            foreach (var row in target.Rows)
            {
                row["名前"] = new XsvField(row.船種 + " " + row.品名);
            }
            target.RemoveColumnHeader("税込価格");
            target.RemoveColumnHeader("船種");
            target.SwapColumnHeader("品名", "名前");
            var sb = new StringBuilder();
            using (var writer = new StringWriter(sb))
            {
                target.Write(writer, ",", new XsvWriteSettings()
                {
                    OutputsHeader = true,
                    SynchronisesColumn = true,
                    UpdatesField = false
                });
            }
            Console.Write(sb.ToString());
            Assert.AreEqual(expected, sb.ToString());
        }
Exemplo n.º 8
0
        public void AddColumnHeaderTest()
        {
            var expected = new[]{ 
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H, 名前= "戦艦 比叡 ひえい", コメント=""},
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H, 名前= "航空戦艦 伊勢 いせ",コメント=""},
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H,名前= "航空母艦 瑞鳳 ずいほう",コメント=""},
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T, 名前= "軽巡洋艦 名取 なとり",コメント=""},
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H, 名前= "重巡洋艦 那智 なち",コメント=""},
                new { 品番 = 0, 船種 = "不明", 品名 = "名無し", 税込価格 = -1, 本体価格 = -1, メーカー = Maker.UNKNOWN, 名前= "不明 名無し",コメント=""}
            };

            var target = new XsvData<ShipModelDataRow>(new[] { "," });
            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            target.AddColumnHeader("名前");
            target.AddColumnHeader("コメント");
            foreach (var row in target.Rows)
            {
                row["名前"] = new XsvField(row.船種 + " " + row.品名);
            }

            target.SynchronizeColumns();
            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row.品番);
                Assert.AreEqual(x.exp.船種, x.row.船種);
                Assert.AreEqual(x.exp.品名, x.row.品名);
                Assert.AreEqual(x.exp.税込価格, x.row.税込価格);
                Assert.AreEqual(x.exp.本体価格, x.row.本体価格);
                Assert.AreEqual(x.exp.メーカー, x.row.メーカー);
                Assert.AreEqual(x.exp.名前, x.row["名前"].AsString());
                Assert.AreEqual(x.exp.コメント, x.row["コメント"].AsString());
            }
        }
Exemplo n.º 9
0
        public void ReadCsvTest_inhelitedXsvDataRow()
        {
            var expected = new[]{ 
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H },
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H },
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H},
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T },
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H },
                new { 品番 = 0, 船種 = "不明", 品名 = "名無し", 税込価格 = -1, 本体価格 = -1, メーカー = Maker.UNKNOWN }
            };

            var target = new XsvData<ShipModelDataRow>(new[] { "," });
            using (var reader = new System.IO.StringReader(data2))
            {
                target.Read(reader);
            }

            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row.品番);
                Assert.AreEqual(x.exp.船種, x.row.船種);
                Assert.AreEqual(x.exp.品名, x.row.品名);
                Assert.AreEqual(x.exp.税込価格, x.row.税込価格);
                Assert.AreEqual(x.exp.本体価格, x.row.本体価格);
                Assert.AreEqual(x.exp.メーカー, x.row.メーカー);
            }
        }
Exemplo n.º 10
0
        public void ReadCsvTest_indexer()
        {
            var expected = new[]{ 
                new { 品番 = 110, 船種 = "戦艦", 品名 = "比叡 ひえい", 税込価格 = 2625, 本体価格 = 2500, メーカー = Maker.H },
                new { 品番 = 119, 船種 = "航空戦艦", 品名 = "伊勢 いせ", 税込価格 = 3360, 本体価格 = 3200, メーカー = Maker.H },
                new { 品番 = 216, 船種 = "航空母艦", 品名 = "瑞鳳 ずいほう", 税込価格 = 2100, 本体価格 = 2000, メーカー = Maker.H},
                new { 品番 = 320, 船種 = "軽巡洋艦", 品名 = "名取 なとり", 税込価格 = 1365, 本体価格 = 1300, メーカー = Maker.T },
                new { 品番 = 334, 船種 = "重巡洋艦", 品名 = "那智 なち", 税込価格 = 1890, 本体価格 = 1800, メーカー = Maker.H },
                new { 品番 = 429, 船種 = "駆逐艦", 品名 = "桜 さくら", 税込価格 = 630, 本体価格 = 600, メーカー = Maker.T }
            };

            var target = new XsvData(new XsvDataSettings()
            {
                Delimiters = new[] { "," },
                HeaderExists = true
            });
            using (var reader = new System.IO.StringReader(data1))
            {
                target.Read(reader);
            }

            foreach (var x in target.Rows.Zip(expected, (a, b) => new { row = a, exp = b }))
            {
                Assert.AreEqual(x.exp.品番, x.row["品番"].AsInt32());
                Assert.AreEqual(x.exp.船種, x.row["船種"].AsString());
                Assert.AreEqual(x.exp.品名, x.row["品名"].AsString());
                Assert.AreEqual(x.exp.税込価格, x.row["税込価格"].AsInt32());
                Assert.AreEqual(x.exp.本体価格, x.row["本体価格"].AsInt32(System.Globalization.NumberStyles.Currency));
                Assert.AreEqual(x.exp.メーカー, x.row["メーカー"].AsEnum<Maker>());
            }
        }
Exemplo n.º 11
0
        public void ParseTest()
        {
            const string quot  = "\"";
            const string quot2 = quot + quot;
            const string ret   = "\r\n";
            const string sep   = ";";
            const string sep2  = ",";

            string[] data =
            {
                "columnA" + sep,
                "columnB" + sep2,
                "columnC" + sep,
                "columnD" + sep2,
                "columnE" + ret,

                "  リンゴ " + sep2,
                "" + sep,
                (quot2 + "み" + quot2 + "かん").Enclose(quot) + sep2,
                ("バナ" + ret + "ナ").Enclose(quot) + sep,
                "  パイナップル  " + sep + ret,

                "" + sep,
                "" + sep2,
                "" + sep2,
                "" + sep,
                "" + ret,

                "  ABCD  ".Enclose(quot) + sep,
                ("E" + sep + "FG").Enclose(quot) + sep2,
                ("HIJ" + ret + "K" + ret + ret + "LMN").Enclose(quot) + sep,
                "OPQR" + sep2,
                ""
            };
            var testData = data.ConcatWith("");

            Console.WriteLine(testData);
            Console.WriteLine("");

            using (var reader = new System.IO.StringReader(testData))
            {
                var target = new XsvData <XsvDataRow>(new[] { sep, sep2 });
                target.Read(reader);
                foreach (var row in target.Rows)
                {
                    Console.WriteLine(row.ToString() + " <<");
                }
                Console.WriteLine("");
                foreach (var row in target.Rows)
                {
                    Console.WriteLine(row.OutputFields(new[] { ":" }, ":") + " <<");
                }

                var sb = new StringBuilder();
                using (var writer = new StringWriter(sb))
                {
                    target.Write(writer);
                }
                Console.WriteLine("----------");
                Console.WriteLine(sb.ToString());
            }
        }