1 package com.opencsv.bean;
2
3 import com.opencsv.bean.mocks.OptionalMock;
4 import com.opencsv.exceptions.CsvDataTypeMismatchException;
5 import com.opencsv.exceptions.CsvRequiredFieldEmptyException;
6 import org.apache.commons.lang3.StringUtils;
7 import org.junit.jupiter.api.Test;
8
9 import java.io.StringReader;
10 import java.io.StringWriter;
11 import java.io.Writer;
12 import java.util.List;
13 import java.util.Optional;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17
18
19
20
21 public class OptionalTest {
22
23 @Test
24 public void testReadWithOptionalNull() {
25 List<OptionalMock> beans = new CsvToBeanBuilder<OptionalMock>(new StringReader("field\n\n"))
26 .withType(OptionalMock.class)
27 .build().parse();
28 assertNotNull(beans);
29 assertEquals(1, beans.size());
30 OptionalMock b = beans.get(0);
31 Optional<String> s = b.getField();
32 assertNotNull(s);
33 assertTrue(s.isPresent());
34 assertEquals(StringUtils.EMPTY, s.get());
35 }
36
37 @Test
38 public void testReadWithOptionalNotNull() {
39 List<OptionalMock> beans = new CsvToBeanBuilder<OptionalMock>(new StringReader("field\nstr\n"))
40 .withType(OptionalMock.class)
41 .build().parse();
42 assertNotNull(beans);
43 assertEquals(1, beans.size());
44 OptionalMock b = beans.get(0);
45 Optional<String> s = b.getField();
46 assertNotNull(s);
47 assertTrue(s.isPresent());
48 assertEquals("str", s.get());
49 }
50
51 @Test
52 public void testWriteWithOptionalNull() throws CsvDataTypeMismatchException, CsvRequiredFieldEmptyException {
53 OptionalMock b = new OptionalMock();
54 b.setField(Optional.empty());
55 Writer w = new StringWriter();
56 StatefulBeanToCsv<OptionalMock> b2csv = new StatefulBeanToCsvBuilder<OptionalMock>(w)
57 .withApplyQuotesToAll(false)
58 .build();
59 b2csv.write(b);
60 assertEquals("FIELD\n\n", w.toString());
61 }
62
63 @Test
64 public void testWriteWithOptionalNotNull() throws CsvDataTypeMismatchException, CsvRequiredFieldEmptyException {
65 OptionalMock b = new OptionalMock();
66 b.setField(Optional.of("str"));
67 Writer w = new StringWriter();
68 StatefulBeanToCsv<OptionalMock> b2csv = new StatefulBeanToCsvBuilder<OptionalMock>(w)
69 .withApplyQuotesToAll(false)
70 .build();
71 b2csv.write(b);
72 assertEquals("FIELD\nstr\n", w.toString());
73 }
74 }