1 package com.opencsv.bean.processor; 2 3 import com.opencsv.bean.CsvToBean; 4 import com.opencsv.bean.CsvToBeanBuilder; 5 import org.junit.jupiter.api.DisplayName; 6 import org.junit.jupiter.params.ParameterizedTest; 7 import org.junit.jupiter.params.provider.Arguments; 8 import org.junit.jupiter.params.provider.MethodSource; 9 10 import java.io.Reader; 11 import java.io.StringReader; 12 import java.util.List; 13 import java.util.stream.Stream; 14 15 import static org.junit.jupiter.api.Assertions.assertEquals; 16 17 @SuppressWarnings("unused") 18 public class BeanFieldProcessorTest { 19 private static final String GOOD_NAME = "A good name"; 20 private static final String GOOD_ID_STRING = "256"; 21 private static final int GOOD_ID_INT = 256; 22 private static final String GOOD_BIG_NUMBER_STRING = "some value: 987654321"; 23 private static final long GOOD_BIG_NUMBER_LONG = 987654321; 24 25 private static final int DEFAULT_ID = -1; 26 private static final long DEFAULT_BIG_NUMBER = 31415926; 27 28 public static String HEADER = "id,name,big number\n"; 29 30 31 private CsvToBean<ProcessorTestBean> createBuilderForString(String csvStrings) { 32 Reader stringReader = new StringReader(csvStrings); 33 34 CsvToBeanBuilder<ProcessorTestBean> builder = new CsvToBeanBuilder<>(stringReader); 35 36 return builder.withType(ProcessorTestBean.class).build(); 37 } 38 39 private String createTestString(String line) { 40 StringBuilder builder = new StringBuilder(128); 41 builder.append(HEADER); 42 builder.append(line); 43 builder.append("\n"); 44 return builder.toString(); 45 } 46 47 private static Stream<Arguments> createArguments() { 48 return Stream.of( 49 Arguments.of("1,able,300", 1, "able", 300), 50 Arguments.of(",,", DEFAULT_ID, null, DEFAULT_BIG_NUMBER), 51 Arguments.of(" , , ", DEFAULT_ID, null, DEFAULT_BIG_NUMBER) 52 ); 53 } 54 55 @DisplayName("Test out preassignment processor") 56 @ParameterizedTest 57 @MethodSource("createArguments") 58 public void testProcessor(String line, int id, String name, long bigNumber) { 59 String testString = createTestString(line); 60 CsvToBean<ProcessorTestBean> csvToBean = createBuilderForString(testString); 61 62 List<ProcessorTestBean> beans = csvToBean.parse(); 63 assertEquals(1, beans.size()); 64 ProcessorTestBean bean = beans.get(0); 65 assertEquals(id, bean.getBeanId()); 66 assertEquals(name, bean.getBeanName()); 67 assertEquals(bigNumber, bean.getBigNumber()); 68 } 69 70 }