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)); }
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)); }
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); }
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(); }
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); }
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)")); }
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)")); }
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))); }
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); }
// 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)); }