Ticket_13.java
package com.univocity.parsers.issues.support;
import com.univocity.parsers.annotations.*;
import com.univocity.parsers.common.processor.*;
import com.univocity.parsers.fixed.*;
import org.testng.annotations.*;
import java.io.*;
import java.util.*;
import static org.testng.Assert.*;
public class Ticket_13 {
	public static class TestRecord {
		@Parsed
		@FixedWidth(from = 0, to = 2)
		String type;
		@Parsed
		@FixedWidth(from = 2, to = 6)
		String code;
		@Parsed
		@FixedWidth(from = 6, to = 46)
		String identifier;
		@Parsed
		@FixedWidth(from = 46, to = 51, keepPadding = true)
		String currency;
		@Parsed
		@FixedWidth(from = 51, to = 59)
		String first_date;
		@Parsed
		@FixedWidth(from = 59, to = 67)
		String second_date;
		@Parsed
		@FixedWidth(from = 67, to = 84)
		String amount;
		@Parsed
		@FixedWidth(from = 84, to = 85)
		String amount_sign;
	}
	static final String content = "" +
			"04123012300104241233350010                    EUR  201806182018061800000000012345.18\n" +
			"  123012300104241233350010                    EUR  201806182018062200000000001235.18-\n";
	@Test
	public void shouldParseFile() {
		BeanListProcessor<TestRecord> rowProcessor = new BeanListProcessor<TestRecord>(TestRecord.class);
		FixedWidthParserSettings settings = new FixedWidthParserSettings();
		settings.setProcessor(rowProcessor);
		settings.getFormat().setLineSeparator("\n");
		settings.setRecordEndsOnNewline(true);
		FixedWidthParser parser = new FixedWidthParser(settings);
		parser.parse(new StringReader(content));
		final List<TestRecord> testRecords = rowProcessor.getBeans();
		final TestRecord firstRec = testRecords.get(0);
		assertEquals(firstRec.type, "04");
		assertEquals(firstRec.identifier, "12300104241233350010");
		assertEquals(firstRec.code, "1230");
		assertEquals(firstRec.amount_sign, null);
		assertEquals(firstRec.currency, "EUR  ");
	}
}