View Javadoc
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  }