Beispiel #1
0
        public void Generate_Single_VisualBasic_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(50)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

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

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String("Jy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJyA8YXV0by1nZW5lcmF0ZWQ+DQonICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQonDQonICAgICBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBtYXkgY2F1c2UgaW5jb3JyZWN0IGJlaGF2aW9yIGFuZCB3aWxsIGJlIGxvc3QgaWYNCicgICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KJyA8L2F1dG8tZ2VuZXJhdGVkPg0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpPcHRpb24gU3RyaWN0IE9mZg0KT3B0aW9uIEV4cGxpY2l0IE9uDQoNCkltcG9ydHMgU3lzdGVtDQoNCk5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0KICAgIA0KICAgIFB1YmxpYyBOb3RJbmhlcml0YWJsZSBDbGFzcyBDdXN0b21lcg0KICAgICAgICANCiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGxvbmcgRG9jIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIERhdGVUaW1lIEJpcnRoRGF0ZSB7IGdldDsgc2V0OyB9DQogICAgRW5kIENsYXNzDQpFbmQgTmFtZXNwYWNlDQo="));

            var output = ((IRecordDescriptor)descriptor).GenerateVisualBasicClass("Customer", "FileHelpers.Tests");

            Assert.AreEqual(exptectedOutput, output);
        }
Beispiel #2
0
        public void Generate_Single_CSharp_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(50)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

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

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String("Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIDxhdXRvLWdlbmVyYXRlZD4NCi8vICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQovLw0KLy8gICAgIENoYW5nZXMgdG8gdGhpcyBmaWxlIG1heSBjYXVzZSBpbmNvcnJlY3QgYmVoYXZpb3IgYW5kIHdpbGwgYmUgbG9zdCBpZg0KLy8gICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KLy8gPC9hdXRvLWdlbmVyYXRlZD4NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCm5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0Kew0KICAgIHVzaW5nIFN5c3RlbTsNCiAgICANCiAgICANCiAgICBwdWJsaWMgc2VhbGVkIGNsYXNzIEN1c3RvbWVyDQogICAgew0KICAgICAgICANCiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGxvbmcgRG9jIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIERhdGVUaW1lIEJpcnRoRGF0ZSB7IGdldDsgc2V0OyB9DQogICAgfQ0KfQ0K"));

            var output = ((IRecordDescriptor)descriptor).GenerateCSharpClass("Customer", "FileHelpers.Tests");

            Assert.AreEqual(exptectedOutput, output);
        }
Beispiel #3
0
        public void Write_Boolean_With_Format_True_Diff_Value()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Enabled")
            .SetLength(1)
            .SetConverter(typeof(BooleanConverter))
            .SetConverterFormat("1:V,0:F");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 V");

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

            Assert.AreEqual(true, item.Enabled);

            var output = engine.WriteString(items).Replace("\r\n", string.Empty);

            Assert.AreEqual("Product 1 V", output);
        }
Beispiel #4
0
        public void Write_With_Decimal_Positive_N_Integer_Signal_Separator_Format()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Price")
            .SetLength(18)
            .SetConverter(typeof(DecimalConverter))
            .SetConverterFormat("+NS15.2");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 +00000000000001.29");

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

            Assert.AreEqual(1.29M, item.Price);
            var output = engine.WriteString(items).Replace("\r\n", string.Empty);

            Assert.AreEqual("Product 1 +00000000000001.29", output);
        }
        public void Read_With_Null()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(5)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("MiddleName")
            .SetLength(5);

            descriptor.AddField("LastName")
            .SetLength(5);

            var engine = descriptor.Build();


            var items = engine.ReadFile(@"C:\tmp\Message.txt");

            Assert.AreEqual(1, items.Length);

            dynamic item = items[0];

            Assert.AreEqual(null, item.MiddleName);
        }
Beispiel #6
0
        public void Read_With_DateTime_yyyyMMdd_Converter()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(50)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

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

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Harlen Naves                                      0000587065966319840330");

            Assert.AreEqual(1, items.Length);

            dynamic item = items[0];

            Assert.AreEqual("Harlen Naves", item.Name);
            Assert.AreEqual(05870659663, item.Doc);
        }
        public void Invalid_Array_Remainder_Length()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3);

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            var arrayBuilder = descriptor.AddArray("ArrayData");

            arrayBuilder.SetArrayLength(500)
            .SetArrayItemLength(11)
            .SetAlign(true);

            arrayBuilder.AddField("DealId")
            .SetLength(10)
            .SetAlignMode(AlignMode.Right)
            .SetNullValue(string.Empty)
            .SetAlignChar('0');

            var engine = new FluentFixedEngine(descriptor);
        }
        public void Serialize_Descriptor()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetType(typeof(int))
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(false);

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            var jsonDescriptor = descriptor.Build().Serialize();
        }
Beispiel #9
0
        public static FluentFixedEngine Build(string json)
        {
            dynamic deserializedBuilderInfo = JObject.Parse(json);

            var descriptor = new FixedRecordDescriptor();

            if (deserializedBuilderInfo.FixedMode != null)
            {
                descriptor.FixedMode = (FixedMode)deserializedBuilderInfo.FixedMode.Value;
            }

            if (deserializedBuilderInfo.IgnoreEmptyLines != null)
            {
                descriptor.IgnoreEmptyLines = deserializedBuilderInfo.IgnoreEmptyLines.Value;
            }

            if (deserializedBuilderInfo.Fields != null)
            {
                foreach (dynamic fieldInfo in deserializedBuilderInfo.Fields)
                {
                    if (fieldInfo.Name == null || fieldInfo.Value == null)
                    {
                        continue;
                    }
                    if (fieldInfo.Value.IsArray != null && (bool)fieldInfo.Value.IsArray.Value)
                    {
                        CreateArray(descriptor, fieldInfo);
                        continue;
                    }
                    CreateField(descriptor, fieldInfo);
                }
            }

            return(descriptor.Build());
        }
Beispiel #10
0
        public void Write_With_DateTime_yyyyMMdd_Converter()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(50)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0');

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

            var engine = new FluentFixedEngine(descriptor);

            var item = new ExpandoObject();

            item.TryAdd("Name", "Harlen Naves");
            item.TryAdd("Doc", 05870659663);
            item.TryAdd("BirthDate", new DateTime(1984, 03, 30));

            string line = engine.WriteString(new[] { item });

            Assert.AreEqual("Harlen Naves                                      0000587065966319840330" + Environment.NewLine, line);
        }
        public void Invalid_Property_Length()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("")
            .SetLength(10);
            var engine = new FluentFixedEngine(descriptor);
        }
        public void Deserialize_Descriptor()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(false);

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            var engineToSerialize = descriptor.Build();

            var jsonDescriptor = engineToSerialize.Serialize();

            var engine = FluentFixedEngine.Build(jsonDescriptor);

            ExpandoObject item = new ExpandoObject();

            item.TryAdd("Function", "001");
            item.TryAdd("ArraySize", 25);

            List <ExpandoObject> arrayData = new List <ExpandoObject>();

            for (int i = 0; i < 25; i++)
            {
                ExpandoObject arrayItem = new ExpandoObject();
                arrayItem.TryAdd("DealId", "STOCKASC" + i.ToString().PadLeft(2, '0'));
                arrayData.Add(arrayItem);
            }

            item.TryAdd("ArrayData", arrayData);

            string content = engine.WriteString(new[] { item });

            Assert.AreEqual("0010025STOCKASC00STOCKASC01STOCKASC02STOCKASC03STOCKASC04STOCKASC05STOCKASC06STOCKASC07STOCKASC08STOCKASC09STOCKASC10STOCKASC11STOCKASC12STOCKASC13STOCKASC14STOCKASC15STOCKASC16STOCKASC17STOCKASC18STOCKASC19STOCKASC20STOCKASC21STOCKASC22STOCKASC23STOCKASC24" + Environment.NewLine, content);
        }
Beispiel #13
0
        public void Read_With_Decimal_Positive()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Price")
            .SetLength(18)
            .SetConverter(typeof(DecimalConverter))
            .SetConverterFormat("0.00");

            var engine = new FluentFixedEngine(descriptor);

            var itens = engine.ReadString("Product 1 000000000000000129");
        }
Beispiel #14
0
        public void Read_With_NullValue()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(50)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetNullValue("05870659663")
            .SetAlignChar('0');

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Harlen Naves                                                    ");
        }
        public void Invalid_Array_Without_Fields()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3);

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            var arrayBuilder = descriptor.AddArray("ArrayData");

            arrayBuilder.SetArrayLength(500)
            .SetArrayItemLength(10)
            .SetAlign(true);

            var engine = new FluentFixedEngine(descriptor);
        }
        public void Write()
        {
            var recordDescriptor = new FixedRecordDescriptor();

            recordDescriptor.AddField("Name")
            .SetLength(50);
            recordDescriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0');

            var engine = new FluentFixedEngine(recordDescriptor);

            ExpandoObject item = new ExpandoObject();

            item.TryAdd("Name", "Harlen Naves");
            item.TryAdd("Doc", 05870659663);

            string line = engine.WriteString(new[] { item });
        }
Beispiel #17
0
        public void Read_With_Array()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(true)
                                  .SetAlignChar('0');

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString(
                "0010025STOCKAPA17STOCKASS18STOCKASS17STOCKDIC18STOCKDIC17STOCKDIP18STOCKDIP17STOCKGOT18STOCKGOT17STOCKLUV18STOCKLUV17STOCKNOR18STOCKNOR17STOCKRIV18STOCKRIV17STOCKSUE18STOCKSUE17STOCKTRC18STOCKTRC17STOCKTRV18STOCKTRV17STOCKLAP18STOCKLAP17STOCKASC18STOCKASC17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");

            Assert.AreEqual(1, items.Length);

            dynamic item = items[0];

            Assert.AreEqual("001", item.Function);
            Assert.AreEqual(25, item.ArraySize);
            Assert.AreEqual(item.ArraySize, item.ArrayData.Length);
        }
Beispiel #18
0
        public void Read_With_Decimal_Positive_N_3_Format()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Price")
            .SetLength(18)
            .SetConverter(typeof(DecimalConverter))
            .SetConverterFormat("N3");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 000000000000000129");

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

            Assert.AreEqual(0.129M, item.Price);
        }
Beispiel #19
0
        public void Read_With_Decimal_Negative()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Price")
            .SetLength(18)
            .SetConverter(Type.GetType("FileHelpers.Fluent.Core.Converters.DecimalConverter, FileHelpers.Fluent.Core", false))
            .SetConverterFormat("0.00");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 -00000000000000129");

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

            Assert.AreEqual(-1.29M, item.Price);
        }
Beispiel #20
0
        public void Read_With_Double_Negative_LessChars()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Price")
            .SetLength(12)
            .SetConverter(typeof(DoubleConverter))
            .SetConverterFormat("0.00");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 -129");

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

            Assert.AreEqual(-1.29, item.Price);
        }
Beispiel #21
0
        public void Read_Boolean_With_True_Format_False_Value()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Name")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("Enabled")
            .SetLength(1)
            .SetConverter(typeof(BooleanConverter))
            .SetConverterFormat("1:T");

            var engine = new FluentFixedEngine(descriptor);

            var items = engine.ReadString("Product 1 A");

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

            Assert.AreEqual(false, item.Enabled);
        }
Beispiel #22
0
        public void Generate_With_Array_CSharp_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(true)
                                  .SetAlignChar('0');

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');


            var output = ((IRecordDescriptor)descriptor).GenerateCSharpClass("Customer", "FileHelpers.Tests");

            var base64Output = "Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIDxhdXRvLWdlbmVyYXRlZD4NCi8vICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQovLw0KLy8gICAgIENoYW5nZXMgdG8gdGhpcyBmaWxlIG1heSBjYXVzZSBpbmNvcnJlY3QgYmVoYXZpb3IgYW5kIHdpbGwgYmUgbG9zdCBpZg0KLy8gICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KLy8gPC9hdXRvLWdlbmVyYXRlZD4NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCm5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0Kew0KICAgIHVzaW5nIFN5c3RlbTsNCiAgICB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCiAgICANCiAgICANCiAgICBwdWJsaWMgc2VhbGVkIGNsYXNzIEFycmF5RGF0YUl0ZW0NCiAgICB7DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgc3RyaW5nIERlYWxJZCB7IGdldDsgc2V0OyB9DQogICAgfQ0KICAgIA0KICAgIHB1YmxpYyBzZWFsZWQgY2xhc3MgQ3VzdG9tZXINCiAgICB7DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZ1bmN0aW9uIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBBcnJheVNpemUgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8QXJyYXlEYXRhSXRlbT4gQXJyYXlEYXRhIHsgZ2V0OyBzZXQ7IH0NCiAgICB9DQp9DQo=";

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String(base64Output));

            Assert.AreEqual(exptectedOutput, output);
        }
Beispiel #23
0
        public void Generate_With_Array_VisualBasic_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(true)
                                  .SetAlignChar('0');

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');


            var output = ((IRecordDescriptor)descriptor).GenerateVisualBasicClass("Customer", "FileHelpers.Tests");

            var base64Output = "Jy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJyA8YXV0by1nZW5lcmF0ZWQ+DQonICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQonDQonICAgICBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBtYXkgY2F1c2UgaW5jb3JyZWN0IGJlaGF2aW9yIGFuZCB3aWxsIGJlIGxvc3QgaWYNCicgICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KJyA8L2F1dG8tZ2VuZXJhdGVkPg0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpPcHRpb24gU3RyaWN0IE9mZg0KT3B0aW9uIEV4cGxpY2l0IE9uDQoNCkltcG9ydHMgU3lzdGVtDQpJbXBvcnRzIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljDQoNCk5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0KICAgIA0KICAgIFB1YmxpYyBOb3RJbmhlcml0YWJsZSBDbGFzcyBBcnJheURhdGFJdGVtDQogICAgICAgIA0KICAgICAgICBwdWJsaWMgc3RyaW5nIERlYWxJZCB7IGdldDsgc2V0OyB9DQogICAgRW5kIENsYXNzDQogICAgDQogICAgUHVibGljIE5vdEluaGVyaXRhYmxlIENsYXNzIEN1c3RvbWVyDQogICAgICAgIA0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZ1bmN0aW9uIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBBcnJheVNpemUgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8QXJyYXlEYXRhSXRlbT4gQXJyYXlEYXRhIHsgZ2V0OyBzZXQ7IH0NCiAgICBFbmQgQ2xhc3MNCkVuZCBOYW1lc3BhY2UNCg==";

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String(base64Output));

            Assert.AreEqual(exptectedOutput, output);
        }
Beispiel #24
0
        public void Generate_With_Multi_Array_VisualBasic_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("MessageAction")
            .SetLength(32)
            .SetTrimMode(TrimMode.Right);

            descriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TPCONTR")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;

            descriptor.AddField("TPPARM")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;
            descriptor.AddField("TPCHASSI")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;
            descriptor.AddField("NUMCDB")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TPBONUS")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;

            descriptor.AddField("NUMCONTRINI")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("NUMCONTRFIM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TXTDESCRICAO")
            .SetLength(80)
            .SetTrimMode(TrimMode.Right);

            var accountingEventDescriptor = descriptor.AddArray("AccountingEvent")
                                            .SetAlign(true)
                                            .SetAlignChar(' ')
                                            .SetArrayLength(5590)
                                            .SetArrayItemLength(1118);

            accountingEventDescriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingEventDescriptor.AddField("NUMEVENT")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingEventDescriptor.AddField("TXTDESCRICAO")
            .SetLength(80)
            .SetTrimMode(TrimMode.Right);

            var accountingDataDescriptor = accountingEventDescriptor.AddSubArray("AccountingData")
                                           .SetAlign(true)
                                           .SetAlignChar(' ')
                                           .SetArrayLength(1020)
                                           .SetArrayItemLength(102);

            accountingDataDescriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("NUMEVENT")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("CODTIPO")
            .SetLength(2)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("NUMSEQ")
            .SetLength(4)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("DESCCONTA")
            .SetLength(10)
            .SetTrimMode(TrimMode.Right);

            accountingDataDescriptor.AddField("DESCCENTRO")
            .SetLength(10)
            .SetTrimMode(TrimMode.Right);

            accountingDataDescriptor.AddField("VLRPERCEN")
            .SetLength(5)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ')
            .SetConverterFormat("N2")
            .SetConverter(typeof(DecimalConverter))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("CODLCTO")
            .SetLength(2)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("CODCOPA")
            .SetLength(1)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("TXTDESCRICAO")
            .SetLength(50)
            .SetTrimMode(TrimMode.Right);

            var output       = ((IRecordDescriptor)descriptor).GenerateVisualBasicClass("Accounting", "FileHelpers.Tests");
            var base64Output = "Jy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJyA8YXV0by1nZW5lcmF0ZWQ+DQonICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQonDQonICAgICBDaGFuZ2VzIHRvIHRoaXMgZmlsZSBtYXkgY2F1c2UgaW5jb3JyZWN0IGJlaGF2aW9yIGFuZCB3aWxsIGJlIGxvc3QgaWYNCicgICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KJyA8L2F1dG8tZ2VuZXJhdGVkPg0KJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpPcHRpb24gU3RyaWN0IE9mZg0KT3B0aW9uIEV4cGxpY2l0IE9uDQoNCkltcG9ydHMgU3lzdGVtDQpJbXBvcnRzIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljDQoNCk5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0KICAgIA0KICAgIFB1YmxpYyBOb3RJbmhlcml0YWJsZSBDbGFzcyBBY2NvdW50aW5nRGF0YUl0ZW0NCiAgICAgICAgDQogICAgICAgIHB1YmxpYyBpbnQgTlVNUEFSQU0geyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgaW50IE5VTUVWRU5UIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBDT0RUSVBPIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1TRVEgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIERFU0NDT05UQSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgREVTQ0NFTlRSTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBkZWNpbWFsIFZMUlBFUkNFTiB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgQ09ETENUTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgQ09EQ09QQSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFhUREVTQ1JJQ0FPIHsgZ2V0OyBzZXQ7IH0NCiAgICBFbmQgQ2xhc3MNCiAgICANCiAgICBQdWJsaWMgTm90SW5oZXJpdGFibGUgQ2xhc3MgQWNjb3VudGluZ0V2ZW50SXRlbQ0KICAgICAgICANCiAgICAgICAgcHVibGljIGludCBOVU1QQVJBTSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBpbnQgTlVNRVZFTlQgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRYVERFU0NSSUNBTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBJTGlzdDxBY2NvdW50aW5nRGF0YUl0ZW0+IEFjY291bnRpbmdEYXRhIHsgZ2V0OyBzZXQ7IH0NCiAgICBFbmQgQ2xhc3MNCiAgICANCiAgICBQdWJsaWMgTm90SW5oZXJpdGFibGUgQ2xhc3MgQWNjb3VudGluZw0KICAgICAgICANCiAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlQWN0aW9uIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1QQVJBTSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFBDT05UUiB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFBQQVJNIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBUUENIQVNTSSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgTlVNQ0RCIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBUUEJPTlVTIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1DT05UUklOSSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBpbnQgTlVNQ09OVFJGSU0geyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRYVERFU0NSSUNBTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBJTGlzdDxBY2NvdW50aW5nRXZlbnRJdGVtPiBBY2NvdW50aW5nRXZlbnQgeyBnZXQ7IHNldDsgfQ0KICAgIEVuZCBDbGFzcw0KRW5kIE5hbWVzcGFjZQ0K";

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String(base64Output));

            Assert.AreEqual(exptectedOutput, output);
        }
Beispiel #25
0
        public void Generate_With_Multi_Array_CSharp_Class()
        {
            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("MessageAction")
            .SetLength(32)
            .SetTrimMode(TrimMode.Right);

            descriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TPCONTR")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;

            descriptor.AddField("TPPARM")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;
            descriptor.AddField("TPCHASSI")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;
            descriptor.AddField("NUMCDB")
            .SetLength(10)
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TPBONUS")
            .SetLength(1)
            .SetTrimMode(TrimMode.None)
            ;

            descriptor.AddField("NUMCONTRINI")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("NUMCONTRFIM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            descriptor.AddField("TXTDESCRICAO")
            .SetLength(80)
            .SetTrimMode(TrimMode.Right);

            var accountingEventDescriptor = descriptor.AddArray("AccountingEvent")
                                            .SetAlign(true)
                                            .SetAlignChar(' ')
                                            .SetArrayLength(5590)
                                            .SetArrayItemLength(1118);

            accountingEventDescriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingEventDescriptor.AddField("NUMEVENT")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingEventDescriptor.AddField("TXTDESCRICAO")
            .SetLength(80)
            .SetTrimMode(TrimMode.Right);

            var accountingDataDescriptor = accountingEventDescriptor.AddSubArray("AccountingData")
                                           .SetAlign(true)
                                           .SetAlignChar(' ')
                                           .SetArrayLength(1020)
                                           .SetArrayItemLength(102);

            accountingDataDescriptor.AddField("NUMPARAM")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("NUMEVENT")
            .SetLength(9)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("CODTIPO")
            .SetLength(2)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("NUMSEQ")
            .SetLength(4)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0')
            .SetType(typeof(int))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("DESCCONTA")
            .SetLength(10)
            .SetTrimMode(TrimMode.Right);

            accountingDataDescriptor.AddField("DESCCENTRO")
            .SetLength(10)
            .SetTrimMode(TrimMode.Right);

            accountingDataDescriptor.AddField("VLRPERCEN")
            .SetLength(5)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ')
            .SetConverterFormat("N2")
            .SetConverter(typeof(DecimalConverter))
            .SetTrimMode(TrimMode.Both);

            accountingDataDescriptor.AddField("CODLCTO")
            .SetLength(2)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("CODCOPA")
            .SetLength(1)
            .SetTrimMode(TrimMode.None);

            accountingDataDescriptor.AddField("TXTDESCRICAO")
            .SetLength(50)
            .SetTrimMode(TrimMode.Right);

            var output       = ((IRecordDescriptor)descriptor).GenerateCSharpClass("Accounting", "FileHelpers.Tests");
            var base64Output = "Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIDxhdXRvLWdlbmVyYXRlZD4NCi8vICAgICBUaGlzIGNvZGUgd2FzIGdlbmVyYXRlZCBieSBhIHRvb2wuDQovLw0KLy8gICAgIENoYW5nZXMgdG8gdGhpcyBmaWxlIG1heSBjYXVzZSBpbmNvcnJlY3QgYmVoYXZpb3IgYW5kIHdpbGwgYmUgbG9zdCBpZg0KLy8gICAgIHRoZSBjb2RlIGlzIHJlZ2VuZXJhdGVkLg0KLy8gPC9hdXRvLWdlbmVyYXRlZD4NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCm5hbWVzcGFjZSBGaWxlSGVscGVycy5UZXN0cw0Kew0KICAgIHVzaW5nIFN5c3RlbTsNCiAgICB1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCiAgICANCiAgICANCiAgICBwdWJsaWMgc2VhbGVkIGNsYXNzIEFjY291bnRpbmdEYXRhSXRlbQ0KICAgIHsNCiAgICAgICAgDQogICAgICAgIHB1YmxpYyBpbnQgTlVNUEFSQU0geyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgaW50IE5VTUVWRU5UIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBDT0RUSVBPIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1TRVEgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIERFU0NDT05UQSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgREVTQ0NFTlRSTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBkZWNpbWFsIFZMUlBFUkNFTiB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgQ09ETENUTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgQ09EQ09QQSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFhUREVTQ1JJQ0FPIHsgZ2V0OyBzZXQ7IH0NCiAgICB9DQogICAgDQogICAgcHVibGljIHNlYWxlZCBjbGFzcyBBY2NvdW50aW5nRXZlbnRJdGVtDQogICAgew0KICAgICAgICANCiAgICAgICAgcHVibGljIGludCBOVU1QQVJBTSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBpbnQgTlVNRVZFTlQgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRYVERFU0NSSUNBTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBJTGlzdDxBY2NvdW50aW5nRGF0YUl0ZW0+IEFjY291bnRpbmdEYXRhIHsgZ2V0OyBzZXQ7IH0NCiAgICB9DQogICAgDQogICAgcHVibGljIHNlYWxlZCBjbGFzcyBBY2NvdW50aW5nDQogICAgew0KICAgICAgICANCiAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlQWN0aW9uIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1QQVJBTSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFBDT05UUiB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgVFBQQVJNIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBUUENIQVNTSSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBzdHJpbmcgTlVNQ0RCIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIHN0cmluZyBUUEJPTlVTIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgcHVibGljIGludCBOVU1DT05UUklOSSB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBpbnQgTlVNQ09OVFJGSU0geyBnZXQ7IHNldDsgfQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRYVERFU0NSSUNBTyB7IGdldDsgc2V0OyB9DQogICAgICAgIHB1YmxpYyBJTGlzdDxBY2NvdW50aW5nRXZlbnRJdGVtPiBBY2NvdW50aW5nRXZlbnQgeyBnZXQ7IHNldDsgfQ0KICAgIH0NCn0NCg==";

            var exptectedOutput = Encoding.UTF8.GetString(Convert.FromBase64String(base64Output));

            Assert.AreEqual(exptectedOutput, output);
        }
        public void Write()
        {
            var clientDescriptor = new FixedRecordDescriptor();

            clientDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Name")
            .SetLength(50)
            .SetAlignMode(AlignMode.Right)
            .SetTrimMode(TrimMode.Both)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

            clientDescriptor.AddField("BirthDate")
            .SetLength(8)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var addressDescriptor = new FixedRecordDescriptor();

            addressDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            addressDescriptor.AddField("Street")
            .SetLength(20)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');
            addressDescriptor.AddField("City")
            .SetLength(20)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');


            var engine = new FluentFixedMultiRecordEngine("RecordType",
                                                          new MultiRecordItem
            {
                Descriptor   = clientDescriptor,
                Name         = "Client",
                RegexPattern = "^(CLI)"
            },
                                                          new MultiRecordItem
            {
                Descriptor   = addressDescriptor,
                Name         = "Address",
                RegexPattern = "^(ADR)"
            }
                                                          );
            string content =
                "CLIHarlen Naves                                      0000587065966319840330\r\nADRNo name street      No name city        ";

            var items = engine.ReadString(content);

            string output = engine.WriteString(items);

            Assert.AreEqual(content + Environment.NewLine, output);
        }
        public void Write_With_Array()
        {
            var clientDescriptor = new FixedRecordDescriptor();

            clientDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Name")
            .SetLength(50)
            .SetAlignMode(AlignMode.Right)
            .SetTrimMode(TrimMode.Both)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

            clientDescriptor.AddField("BirthDate")
            .SetLength(8)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(true)
                                  .SetAlignChar('0');

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');



            ExpandoObject item = new ExpandoObject();

            item.TryAdd("Function", "001");
            item.TryAdd("ArraySize", 25);

            List <ExpandoObject> arrayData = new List <ExpandoObject>();

            for (int i = 0; i < 25; i++)
            {
                ExpandoObject arrayItem = new ExpandoObject();
                arrayItem.TryAdd("DealId", "STOCKASC" + i.ToString().PadLeft(2, '0'));
                arrayData.Add(arrayItem);
            }

            item.TryAdd("ArrayData", arrayData);

            var engine = new FluentFixedMultiRecordEngine("RecordType",
                                                          new MultiRecordItem
            {
                Descriptor   = clientDescriptor,
                Name         = "Client",
                RegexPattern = "^(CLI)"
            },
                                                          new MultiRecordItem
            {
                Descriptor   = descriptor,
                Name         = "Test",
                RegexPattern = "^(TST)"
            });

            string content =
                "TST0010025STOCKASC00STOCKASC01STOCKASC02STOCKASC03STOCKASC04STOCKASC05STOCKASC06STOCKASC07STOCKASC08STOCKASC09STOCKASC10STOCKASC11STOCKASC12STOCKASC13STOCKASC14STOCKASC15STOCKASC16STOCKASC17STOCKASC18STOCKASC19STOCKASC20STOCKASC21STOCKASC22STOCKASC23STOCKASC240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
                Environment.NewLine + "CLIHarlen Naves                                      0000587065966319840330" + Environment.NewLine;

            var records = engine.ReadString(content);

            var output = engine.WriteString(records);

            Assert.AreEqual(content, output);
        }
        public void Two_Record_Types_With_Array()
        {
            var clientDescriptor = new FixedRecordDescriptor();

            clientDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Name")
            .SetLength(50)
            .SetAlignMode(AlignMode.Right)
            .SetTrimMode(TrimMode.Both)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

            clientDescriptor.AddField("BirthDate")
            .SetLength(8)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var descriptor = new FixedRecordDescriptor();

            descriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            descriptor.AddField("Function")
            .SetLength(3)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');

            descriptor.AddField("ArraySize")
            .SetLength(4)
            .SetAlignMode(AlignMode.Left)
            .SetAlignChar('0')
            .SetConverter(typeof(IntegerConverter));

            var arrayDescriptor = descriptor.AddArray("ArrayData")
                                  .SetArrayLength(500)
                                  .SetArrayItemLength(10)
                                  .SetAlign(true)
                                  .SetAlignChar('0');

            arrayDescriptor.AddField("DealId")
            .SetLength(10)
            .SetNullValue(string.Empty)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar('0');



            ExpandoObject item = new ExpandoObject();

            item.TryAdd("Function", "001");
            item.TryAdd("ArraySize", 25);

            List <ExpandoObject> arrayData = new List <ExpandoObject>();

            for (int i = 0; i < 25; i++)
            {
                ExpandoObject arrayItem = new ExpandoObject();
                arrayItem.TryAdd("DealId", "STOCKASC" + i.ToString().PadLeft(2, '0'));
                arrayData.Add(arrayItem);
            }

            item.TryAdd("ArrayData", arrayData);

            var engine = new FluentFixedEngine(new List <RecordItem>
            {
                new RecordItem
                {
                    Descriptor         = clientDescriptor,
                    Name               = "Client",
                    RegexPattern       = "^(CLI)",
                    RecordTypeProperty = "RecordType"
                },
                new RecordItem
                {
                    Descriptor         = descriptor,
                    Name               = "Test",
                    RegexPattern       = "^(TST)",
                    RecordTypeProperty = "RecordType"
                }
            });

            string content =
                "TST0010025STOCKASC00STOCKASC01STOCKASC02STOCKASC03STOCKASC04STOCKASC05STOCKASC06STOCKASC07STOCKASC08STOCKASC09STOCKASC10STOCKASC11STOCKASC12STOCKASC13STOCKASC14STOCKASC15STOCKASC16STOCKASC17STOCKASC18STOCKASC19STOCKASC20STOCKASC21STOCKASC22STOCKASC23STOCKASC240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +
                Environment.NewLine + "CLIHarlen Naves                                      0000587065966319840330" + Environment.NewLine;

            var records = engine.ReadString(content);

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

            dynamic customer = records[1];

            Assert.AreEqual("CLI", customer.RecordType);
            Assert.AreEqual("Harlen Naves", customer.Name);
            Assert.AreEqual((long)05870659663, (long)customer.Doc);
            Assert.IsNotNull(customer.BirthDate);
            Assert.AreEqual(new DateTime(1984, 3, 30).Date, ((DateTime)customer.BirthDate).Date);

            dynamic items = records[0];

            Assert.AreEqual("TST", items.RecordType);
            Assert.AreEqual("001", items.Function);
            Assert.AreEqual(25, (int)items.ArraySize);
            Assert.AreEqual(25, ((object[])items.ArrayData).Length);

            dynamic firstItem = ((object[])items.ArrayData)[0];

            Assert.IsNotNull(firstItem);
            Assert.AreEqual("STOCKASC00", firstItem.DealId);

            dynamic lastItem = ((object[])items.ArrayData)[24];

            Assert.IsNotNull(lastItem);
            Assert.AreEqual("STOCKASC24", lastItem.DealId);
        }
        public void Two_Record_Types()
        {
            var clientDescriptor = new FixedRecordDescriptor();

            clientDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Name")
            .SetLength(50)
            .SetAlignMode(AlignMode.Right)
            .SetTrimMode(TrimMode.Both)
            .SetAlignChar(' ');

            clientDescriptor.AddField("Doc")
            .SetLength(14)
            .SetAlignMode(AlignMode.Left)
            .SetConverter(typeof(LongConverter))
            .SetAlignChar('0');

            clientDescriptor.AddField("BirthDate")
            .SetLength(8)
            .SetConverter(typeof(DateTimeConverter))
            .SetConverterFormat("yyyyMMdd");

            var addressDescriptor = new FixedRecordDescriptor();

            addressDescriptor.AddField("RecordType")
            .SetLength(3)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            addressDescriptor.AddField("Street")
            .SetLength(20)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');
            addressDescriptor.AddField("City")
            .SetLength(20)
            .SetTrimMode(TrimMode.Both)
            .SetAlignMode(AlignMode.Right)
            .SetAlignChar(' ');

            var engine = new FluentFixedEngine(new List <RecordItem>
            {
                new RecordItem
                {
                    Descriptor         = clientDescriptor,
                    Name               = "Client",
                    RegexPattern       = "^(CLI)",
                    RecordTypeProperty = "RecordType"
                },
                new RecordItem
                {
                    Descriptor         = addressDescriptor,
                    Name               = "Address",
                    RegexPattern       = "^(ADR)",
                    RecordTypeProperty = "RecordType"
                }
            });

            string content =
                "CLIHarlen Naves                                      0000587065966319840330\r\nADRNo name street      No name city        ";

            var items = engine.ReadString(content);

            Assert.IsNotNull(items);

            Assert.AreEqual(2, items.Length);

            dynamic customer = items[0];

            Assert.AreEqual("CLI", customer.RecordType);
            Assert.AreEqual("Harlen Naves", customer.Name);
            Assert.AreEqual((long)05870659663, (long)customer.Doc);

            dynamic address = items[1];

            Assert.AreEqual("ADR", address.RecordType);
            Assert.AreEqual("No name street", address.Street);
            Assert.AreEqual("No name city", address.City);
        }
Beispiel #30
0
 public static string Serialize(FixedRecordDescriptor descriptor)
 {
     return(JsonConvert.SerializeObject(descriptor));
 }