Github_432.java
package com.univocity.parsers.issues.github;
import com.univocity.parsers.annotations.*;
import com.univocity.parsers.common.processor.*;
import com.univocity.parsers.csv.*;
import org.testng.annotations.*;
import java.io.*;
import java.util.*;
import static org.testng.Assert.*;
/**
 * From: https://github.com/univocity/univocity-parsers/issues/427
 *
 * @author Univocity Software Pty Ltd - <a href="mailto:parsers@univocity.com">parsers@univocity.com</a>
 */
public class Github_432 {
	public static class Person {
		@Parsed
		private int id;
		@Parsed(defaultNullRead = "[empty]")
		private String name;
		@Nested
		private Address address;
	}
	public static class Address {
		@Parsed
		private String street;
		@Parsed
		private int streetNumber;
	}
	@Test
	public void testNestedWithMissingFields() {
		String data = "id,street,streetNumber\n"+
				"1,3rd,31\n"+
				"2,33th,32";
		CsvParserSettings settings = new CsvParserSettings();
		settings.getFormat().setLineSeparator("\n");
		BeanListProcessor<Person> processor = new BeanListProcessor<Person>(Person.class);
		settings.setProcessor(processor);
		CsvParser parser = new CsvParser(settings);
		parser.parse(new StringReader(data));
		List<Person> beans = processor.getBeans();
		assertEquals(1, beans.get(0).id);
		assertEquals(2, beans.get(1).id);
		assertEquals("3rd", beans.get(0).address.street);
		assertEquals("33th", beans.get(1).address.street);
		assertEquals(31, beans.get(0).address.streetNumber);
		assertEquals(32, beans.get(1).address.streetNumber);
		assertEquals("[empty]", beans.get(0).name);
		assertEquals("[empty]", beans.get(1).name);
	}
}