public void Read()
        {
            var descriptor = new DelimitedRecordDescriptor("|");

            descriptor.AddField("Name")
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Left)
            ;

            descriptor.AddField("BirthDate")
            .SetType(typeof(DateTime))
            .SetConverterFormat("yyyyMMdd")
            ;

            var engine = new DelimitedFluentEngine(descriptor);
            var items  = engine.ReadString("HARLEN      |19840330");

            Assert.IsNotNull(items);
            Assert.AreEqual(1, items.Length);
            dynamic item = items[0];

            Assert.AreEqual("HARLEN", item.Name);
            Assert.IsNotNull(item.BirthDate);
            Assert.AreEqual(new DateTime(1984, 3, 30).Date, ((DateTime)item.BirthDate).Date);
        }
        public void Write()
        {
            var descriptor = new DelimitedRecordDescriptor("|");

            descriptor.AddField("Name")
            .SetTrimMode(TrimMode.None)
            .SetAlignMode(AlignMode.Left)
            ;

            descriptor.AddField("BirthDate")
            .SetType(typeof(DateTime))
            .SetConverterFormat("yyyyMMdd")
            ;
            var originalContent = "HARLEN      |19840330";
            var engine          = new DelimitedFluentEngine(descriptor);
            var items           = engine.ReadString("HARLEN      |19840330");

            Assert.IsNotNull(items);
            Assert.AreEqual(1, items.Length);

            var content = engine.WriteString(items);

            Assert.IsNotNull(content);
            Assert.AreNotEqual(string.Empty, content);
            Assert.AreEqual(originalContent, content.Replace("\r\n", string.Empty));
        }
예제 #3
0
        public void Write_Array_Record()
        {
            var descriptor = new DelimitedRecordDescriptor("|");

            descriptor.AddField("Name")
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Left)
            ;

            descriptor.AddField("BirthDate")
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd")
            ;

            var arrayDescriptor = descriptor.AddArray("Items")
                                  .SetArrayDelimiter("#")
                                  .SetArrayItemBegin("{")
                                  .SetArrayItemEnd("}");

            arrayDescriptor.AddField("ItemName")
            .SetTrimMode(TrimMode.Both);

            arrayDescriptor.AddField("ItemPrice")
            .SetType(typeof(decimal))
            .SetTrimMode(TrimMode.Both);

            var engine  = new DelimitedFluentEngine(descriptor);
            var content = "Harlen|19840330|{Item1#2.00}{Item2#3.59}|Renato Polatti";
            var items   = engine.ReadString(content);

            var writenContent = engine.WriteString(items);

            Assert.AreEqual(content, writenContent);
        }
        public void Two_Record_Types()
        {
            var clientDescriptor = new DelimitedRecordDescriptor("|");

            clientDescriptor
            .AddField("RecordType")
            .SetTrimMode(TrimMode.Both);

            clientDescriptor
            .AddField("Name")
            .SetTrimMode(TrimMode.Both);

            clientDescriptor
            .AddField("BirthDate")
            .SetTrimMode(TrimMode.Both)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var addressDescriptor = new DelimitedRecordDescriptor("|");

            addressDescriptor
            .AddField("RecordType")
            .SetTrimMode(TrimMode.Both);

            addressDescriptor
            .AddField("Street")
            .SetTrimMode(TrimMode.Both);

            addressDescriptor
            .AddField("Number")
            .SetTrimMode(TrimMode.Both)
            .SetType(typeof(int));

            var engine = new DelimitedFluentEngine(new List <RecordItem>
            {
                new RecordItem
                {
                    Descriptor         = clientDescriptor,
                    Name               = "Client",
                    RecordTypeProperty = "RecordType",
                    RegexPattern       = "^(CLI)"
                },
                new RecordItem
                {
                    Descriptor         = addressDescriptor,
                    Name               = "Address",
                    RecordTypeProperty = "RecordType",
                    RegexPattern       = "^(ADR)"
                }
            });
            var originalContent = $"CLI|Harlen Naves|19840330{Environment.NewLine}ADR|No name street|10";

            var items = engine.ReadString(originalContent);

            var content = engine.WriteString(items);

            Assert.AreEqual(originalContent + Environment.NewLine, content);
        }
예제 #5
0
        public void Create_BaseEngine()
        {
            var descriptor = new DelimitedRecordDescriptor("|");

            descriptor.AddField("Name")
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Left)
            ;

            descriptor.AddField("BirthDate")
            .SetType(typeof(DateTime))
            .SetConverterFormat("yyyyMMdd")
            ;

            var engine = new DelimitedFluentEngine(descriptor);
            var items  = engine.ReadString("HARLEN      |19840330");
        }
예제 #6
0
        public void Write_Single_Record()
        {
            var descriptor = new DelimitedRecordDescriptor("|");

            descriptor.AddField("Name")
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Left)
            ;

            descriptor.AddField("BirthDate")
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd")
            ;
            var engine = new DelimitedFluentEngine(descriptor);

            var item = new ExpandoObject();

            item.TryAdd("Name", "Harlen Naves");
            item.TryAdd("BirthDate", new DateTime(1984, 03, 30));
            var content = engine.WriteString(new [] { item });
        }
예제 #7
0
        public void Two_Record_Types()
        {
            var clientDescriptor = new DelimitedRecordDescriptor("|");

            clientDescriptor
            .AddField("RecordType")
            .SetTrimMode(TrimMode.Both);

            clientDescriptor
            .AddField("Name")
            .SetTrimMode(TrimMode.Both);

            clientDescriptor
            .AddField("BirthDate")
            .SetTrimMode(TrimMode.Both)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var addressDescriptor = new DelimitedRecordDescriptor("|");

            addressDescriptor
            .AddField("RecordType")
            .SetTrimMode(TrimMode.Both);

            addressDescriptor
            .AddField("Street")
            .SetTrimMode(TrimMode.Both);

            addressDescriptor
            .AddField("Number")
            .SetTrimMode(TrimMode.Both)
            .SetType(typeof(int));

            var engine = new DelimitedFluentEngine(new List <RecordItem>
            {
                new RecordItem
                {
                    Descriptor         = clientDescriptor,
                    Name               = "Client",
                    RecordTypeProperty = "RecordType",
                    RegexPattern       = "^(CLI)"
                },
                new RecordItem
                {
                    Descriptor         = addressDescriptor,
                    Name               = "Address",
                    RecordTypeProperty = "RecordType",
                    RegexPattern       = "^(ADR)"
                }
            });
            var content = $"CLI|Harlen Naves     |19840330{Environment.NewLine}ADR| No name street   | 10";

            var items = engine.ReadString(content);

            Assert.IsNotNull(items);
            Assert.AreEqual(2, items.Length);

            dynamic client = items[0];

            Assert.AreEqual("CLI", client.RecordType);
            Assert.AreEqual("Harlen Naves", client.Name);
            Assert.AreEqual(new DateTime(1984, 3, 30).Date, ((DateTime)client.BirthDate).Date);

            dynamic address = items[1];

            Assert.AreEqual("ADR", address.RecordType);
            Assert.AreEqual("No name street", address.Street);
            Assert.AreEqual(10, (int)address.Number);
        }