Exemple #1
0
        public void TestDumpLineTooLong()
        {
            var dumpText = FixedWidthParser.DumpRecord(new TestInputRecordDefinition(), "Eddie Stanley       071983-11-07potatoapplepear");
            var expected = ("Field 'NameField', width: 20. Parsed value: 'Eddie Stanley', chars so far: 20\nField 'FamilySizeField', width: 2. Parsed value: '7', chars so far: 22\nField 'BirthdayField', width: 10. Parsed value: '" + new DateTime(1983, 11, 7).ToString(CultureInfo.CurrentCulture) + "', chars so far: 32\n(15 remaining characters) potatoapplepear").Replace("\n", Environment.NewLine);

            Assert.That(dumpText, Is.EqualTo(expected));
        }
Exemple #2
0
        public void TestDumpFieldParsingFailed()
        {
            var dumpText = FixedWidthParser.DumpRecord(new TestInputRecordDefinition(), "Eddie Stanley       XX1983-11-07");
            var expected = "Field 'NameField', width: 20. Parsed value: 'Eddie Stanley', chars so far: 20\nParsing failed for field 'FamilySizeField', width: 2. Raw value was 'XX'. Message: Input string was not in a correct format.\n(12 remaining characters) XX1983-11-07".Replace("\n", Environment.NewLine);

            Assert.That(dumpText, Is.EqualTo(expected));
        }
        public void Throws_If_Line_Shorter_Than_Defined_Endpoint()
        {
            var line = "This    .";

            Assert.Throws <FixedWidthSizeException>(
                () => FixedWidthParser.Parse <SingleStringRecord>(line));
        }
Exemple #4
0
        public void TestBasicUsage()
        {
            var parser = new FixedWidthParser <TestOutputRecord>(new TestInputRecordDefinition());

            Assert.That(parser.LineWidth, Is.EqualTo(32));

            // Note that splitting the input into lines isn't the responsibility of the fixed width parser. How you want to split the
            // input into lines depends on the exact nature of the file that is being parsed. Thus FixedWidthParser expects to be
            // provided with an IEnumerable<string> of lines.
            var inputLines = new[] {
                "Eddie Stanley       091983-11-07",
                "Cassie              3 1987-03-21"
            };

            IEnumerator <TestOutputRecord> recordIterator = parser.ParseIter(inputLines);

            // Iteration not yet started
            Assert.That(recordIterator.Current, Is.Null);
            // Record 1
            Assert.That(recordIterator.MoveNext(), Is.True);
            var currentRecord = recordIterator.Current;

            Assert.That(currentRecord.Name, Is.EqualTo("Eddie Stanley"));
            Assert.That(currentRecord.NumberOfPeopleInFamily, Is.EqualTo(9));
            Assert.That(currentRecord.Birthday, Is.EqualTo(new DateTime(1983, 11, 7)));
            // Record 2
            Assert.That(recordIterator.MoveNext(), Is.True);
            currentRecord = recordIterator.Current;
            Assert.That(currentRecord.Name, Is.EqualTo("Cassie"));
            Assert.That(currentRecord.NumberOfPeopleInFamily, Is.EqualTo(3));
            Assert.That(currentRecord.Birthday, Is.EqualTo(new DateTime(1987, 3, 21)));
            // End of iteration
            Assert.That(recordIterator.MoveNext(), Is.False);
        }
Exemple #5
0
        static void WriteExample()
        {
            var parser = new FixedWidthParser <SampleRecord>();
            var fs     = new FileInfo("test2.txt").OpenWrite();

            var records = new List <SampleRecord>();

            var sample1 = new SampleRecord()
            {
                FirstName = "Daniel",
                LastName  = "Davis",
                Email     = "*****@*****.**"
            };

            var sample2 = new SampleRecord()
            {
                FirstName = "Some",
                LastName  = "Guy"
            };

            records.Add(sample1);
            records.Add(sample2);

            parser.Write(fs, records);

            fs.Close();
        }
Exemple #6
0
        public void TestDumpLineTooShort()
        {
            var dumpText = FixedWidthParser.DumpRecord(new TestInputRecordDefinition(), "Eddie Stanley       091983-11-");
            var expected = "Field 'NameField', width: 20. Parsed value: 'Eddie Stanley', chars so far: 20\nField 'FamilySizeField', width: 2. Parsed value: '9', chars so far: 22\nField 'BirthdayField' (10 bytes) would exceed the line length (30)!\n(8 remaining characters) 1983-11-".Replace("\n", Environment.NewLine);

            Assert.That(dumpText, Is.EqualTo(expected));
        }
            public void Throws_If_Cant_Convert()
            {
                var line = "0000000a32";

                Assert.Throws <Exception>(
                    () => FixedWidthParser.Parse <SingleDecimalRecord>(line));
            }
            public void Finds_Attribute_In_Metadata()
            {
                var line = "This     .";

                var record = FixedWidthParser.Parse <MetadataRecord>(line);

                Assert.Equal(line, record.StringColumn);
            }
            public void Handles_Padded_Zeros()
            {
                var line = "0000003212";

                var record = FixedWidthParser.Parse <SingleDecimalRecord>(line);

                Assert.Equal(32.12m, record.DecColumn);
            }
            public void Handles_Padded_Zeros()
            {
                var line = "0000000032";

                var record = FixedWidthParser.Parse <SingleIntRecord>(line);

                Assert.Equal(32, record.IntColumn);
            }
            public void Parses_Int()
            {
                var line = "        32";

                var record = FixedWidthParser.Parse <SingleIntRecord>(line);

                Assert.Equal(32, record.IntColumn);
            }
            public void Trims_Whitespace()
            {
                var line = "This.     ";

                var record = FixedWidthParser.Parse <SingleStringRecord>(line);

                Assert.Equal("This.", record.StringColumn);
            }
            public void Parses_String()
            {
                var line = "This     .";

                var record = FixedWidthParser.Parse <SingleStringRecord>(line);

                Assert.Equal(line, record.StringColumn);
            }
            public void Parses_Decimal()
            {
                var line = "      3212";

                var record = FixedWidthParser.Parse <SingleDecimalRecord>(line);

                Assert.Equal(32.12m, record.DecColumn);
            }
Exemple #15
0
        public void TestFailureToConvertField()
        {
            var parser = new FixedWidthParser <TestOutputRecord>(new TestInputRecordDefinition());

            Assert.That(() => {
                // ReSharper disable once IteratorMethodResultIsIgnored
                Exhaust(parser.Parse(new [] { "Eddie Stanley       097th Nov 83" }));
            }, Throws.InstanceOf <FixedWidthFormatException>().With.Message.Contains("Failed to parse input field 'BirthdayField' value '7th Nov 83' (assigned output field: 'Birthday', type: DateTime)"));
        }
Exemple #16
0
        public void TestFailureToAssignConvertedValue()
        {
            var parser = new FixedWidthParser <TestFailedAssignmentOutputRecord>(new TestInputRecordDefinition());

            Assert.That(() => {
                // ReSharper disable once IteratorMethodResultIsIgnored
                Exhaust(parser.Parse(new [] { "Eddie Stanley       091983-11-07" }));
            }, Throws.InstanceOf <FixedWidthFormatException>().With.Message.Contains("Failed to assign input field 'NameField' (parsed type: String) to output field 'Birthday' (type: DateTime)"));
        }
Exemple #17
0
        public void TestSkipFields()
        {
            var parser = new FixedWidthParser <TestSkipFieldsOutputRecord>(new TestSkipFieldsInputRecord());
            List <TestSkipFieldsOutputRecord> records = new List <TestSkipFieldsOutputRecord>(parser.Parse(new[] { "Eddie Stanley       091983-11-07" }));

            Assert.That(records.Count, Is.EqualTo(1));
            var record = records[0];

            Assert.That(record.Name, Is.EqualTo("Eddie Stanley"));
            Assert.That(record.Birthday, Is.EqualTo(new DateTime(1983, 11, 7)));
        }
Exemple #18
0
        static void ReadExample()
        {
            var parser = new FixedWidthParser <SampleRecord>();

            parser.ReadFile("test.txt");

            foreach (var record in parser)
            {
                Console.WriteLine($"First Name: {record.FirstName, -12} Last Name: {record.LastName, -12} Email: {record.Email}");
            }
        }
            public void Parses_Complex()
            {
                var line = "This.     " + // String
                           "0000000032" + // Int
                           "      3212";  // Dec

                var record = FixedWidthParser.Parse <ComplexRecord>(line);

                Assert.Equal("This.", record.StringColumn);
                Assert.Equal(32, record.IntColumn);
                Assert.Equal(32.12m, record.DecColumn);
            }
        public void Returns_Type()
        {
            var record = FixedWidthParser.Parse <EmptyRecord>("");

            Assert.IsType <EmptyRecord>(record);
        }
Exemple #21
0
        // This needs to be setup differently later. We should just add the fields and assign the values later.
        static void WriteExample2()
        {
            var parser = new FixedWidthParser <GenericRecord>();
            var fs     = new FileInfo("test3.txt").OpenWrite();

            Queue <Row> rows = new Queue <Row>();
            Row         row  = new Row()
            {
                Fields = new List <Field>()
                {
                    new Field()
                    {
                        Name    = "FirstName",
                        Value   = "Some",
                        Options = new FieldOptions()
                        {
                            FieldWidth = 20
                        }
                    },

                    new Field()
                    {
                        Name    = "Last Name",
                        Value   = "Guy",
                        Options = new FieldOptions()
                        {
                            FieldWidth = 20
                        }
                    }
                }
            };

            Row row2 = new Row()
            {
                Fields = new List <Field>()
                {
                    new Field()
                    {
                        Name    = "FirstName",
                        Value   = "Another",
                        Options = new FieldOptions()
                        {
                            FieldWidth = 20
                        }
                    },

                    new Field()
                    {
                        Name    = "Last Name",
                        Value   = "Guy",
                        Options = new FieldOptions()
                        {
                            FieldWidth = 20
                        }
                    }
                }
            };

            rows.Enqueue(row);
            rows.Enqueue(row2);
            parser.Write(fs, rows);

            fs.Close();
        }
 public void Null_Throws()
 {
     Assert.Throws <ArgumentNullException>(
         () => FixedWidthParser.Parse <EmptyRecord>(null));
 }