|
2 | 2 |
|
3 | 3 | import java.io.ByteArrayOutputStream;
|
4 | 4 | import java.io.StringWriter;
|
| 5 | +import java.util.Arrays; |
| 6 | +import java.util.List; |
5 | 7 |
|
6 | 8 | import com.fasterxml.jackson.databind.*;
|
7 | 9 | import com.fasterxml.jackson.dataformat.csv.*;
|
@@ -78,4 +80,43 @@ public void testCustomNullValue() throws Exception
|
78 | 80 | // MUST use doubling for quotes!
|
79 | 81 | assertEquals("id,n/a\n", result);
|
80 | 82 | }
|
| 83 | + |
| 84 | + public void testNullFieldsOfListsContainedByMainLevelListIssue106() throws Exception { |
| 85 | + CsvMapper mapper = mapperForCsv(); |
| 86 | + |
| 87 | + CsvSchema schema = CsvSchema.builder().build(); |
| 88 | + |
| 89 | + List row1 = Arrays.asList("d0", null, "d2"); |
| 90 | + List row2 = Arrays.asList(null, "d1", "d2"); |
| 91 | + List row3 = Arrays.asList("d0", "d1", null); |
| 92 | + |
| 93 | + List dataList = Arrays.asList(row1, row2, row3); |
| 94 | + |
| 95 | + String result = mapper.writer(schema).writeValueAsString(dataList); |
| 96 | + assertEquals("d0,,d2\n,d1,d2\nd0,d1,\n", result); |
| 97 | + |
| 98 | + schema = schema.withNullValue("n/a"); |
| 99 | + result = mapper.writer(schema).writeValueAsString(dataList); |
| 100 | + assertEquals("d0,n/a,d2\nn/a,d1,d2\nd0,d1,n/a\n", result); |
| 101 | + } |
| 102 | + |
| 103 | + public void testNullElementsOfMainLevelListIssue106() throws Exception { |
| 104 | + CsvMapper mapper = mapperForCsv(); |
| 105 | + CsvSchema schema = CsvSchema.builder().build(); |
| 106 | + |
| 107 | + List row1 = Arrays.asList("d0", null, "d2"); |
| 108 | + List row2 = Arrays.asList(null, "d1", "d2"); |
| 109 | + List row3 = Arrays.asList("d0", "d1", null); |
| 110 | + |
| 111 | + // when serialized, the added root level nulls at index 1 and 3 |
| 112 | + // should be absent from the output |
| 113 | + List dataList = Arrays.asList(row1, null, row2, null, row3); |
| 114 | + |
| 115 | + String result = mapper.writer(schema).writeValueAsString(dataList); |
| 116 | + assertEquals("d0,,d2\n,d1,d2\nd0,d1,\n", result); |
| 117 | + |
| 118 | + schema = schema.withNullValue("n/a"); |
| 119 | + result = mapper.writer(schema).writeValueAsString(dataList); |
| 120 | + assertEquals("d0,n/a,d2\nn/a,d1,d2\nd0,d1,n/a\n", result); |
| 121 | + } |
81 | 122 | }
|
0 commit comments