3030import java .io .ObjectOutputStream ;
3131import java .io .StringReader ;
3232import java .util .ArrayList ;
33+ import java .util .Arrays ;
3334import java .util .Collections ;
3435import java .util .Map ;
3536import java .util .TreeMap ;
3637import java .util .concurrent .ConcurrentHashMap ;
3738import java .util .concurrent .atomic .AtomicInteger ;
3839
40+ import org .apache .commons .lang3 .EnumUtils ;
3941import org .apache .commons .lang3 .StringUtils ;
4042import org .junit .jupiter .api .BeforeEach ;
4143import org .junit .jupiter .api .Test ;
@@ -46,6 +48,7 @@ private enum EnumFixture {
4648 UNKNOWN_COLUMN
4749 }
4850
51+ /** This enum overrides toString() but it's the names that matter. */
4952 public enum EnumHeader {
5053 FIRST ("first" ),
5154 SECOND ("second" ),
@@ -69,13 +72,12 @@ public String toString() {
6972
7073 @ BeforeEach
7174 public void setUp () throws Exception {
72- values = new String [] { "A" , "B" , "C" };
75+ values = new String [] {"A" , "B" , "C" };
7376 final String rowData = StringUtils .join (values , ',' );
7477 try (final CSVParser parser = CSVFormat .DEFAULT .parse (new StringReader (rowData ))) {
7578 record = parser .iterator ().next ();
7679 }
77- final String [] headers = { "first" , "second" , "third" };
78- try (final CSVParser parser = CSVFormat .DEFAULT .withHeader (headers ).parse (new StringReader (rowData ))) {
80+ try (final CSVParser parser = CSVFormat .DEFAULT .builder ().setHeader (EnumHeader .class ).build ().parse (new StringReader (rowData ))) {
7981 recordWithHeader = parser .iterator ().next ();
8082 headerMap = parser .getHeaderMap ();
8183 }
@@ -103,9 +105,9 @@ public void testGetNullEnum() {
103105
104106 @ Test
105107 public void testGetString () {
106- assertEquals (values [0 ], recordWithHeader .get ("first" ));
107- assertEquals (values [1 ], recordWithHeader .get ("second" ));
108- assertEquals (values [2 ], recordWithHeader .get ("third" ));
108+ assertEquals (values [0 ], recordWithHeader .get (EnumHeader . FIRST . name () ));
109+ assertEquals (values [1 ], recordWithHeader .get (EnumHeader . SECOND . name () ));
110+ assertEquals (values [2 ], recordWithHeader .get (EnumHeader . THIRD . name () ));
109111 }
110112
111113 @ Test
@@ -141,8 +143,8 @@ public void testGetUnmappedPositiveInt() {
141143
142144 @ Test
143145 public void testGetWithEnum () {
144- assertEquals (recordWithHeader .get ("first " ), recordWithHeader .get (EnumHeader .FIRST ));
145- assertEquals (recordWithHeader .get ("second " ), recordWithHeader .get (EnumHeader .SECOND ));
146+ assertEquals (recordWithHeader .get ("FIRST " ), recordWithHeader .get (EnumHeader .FIRST ));
147+ assertEquals (recordWithHeader .get ("SECOND " ), recordWithHeader .get (EnumHeader .SECOND ));
146148 assertThrows (IllegalArgumentException .class , () -> recordWithHeader .get (EnumFixture .UNKNOWN_COLUMN ));
147149 }
148150
@@ -171,7 +173,7 @@ public void testIsInconsistent() throws IOException {
171173 @ Test
172174 public void testIsMapped () {
173175 assertFalse (record .isMapped ("first" ));
174- assertTrue (recordWithHeader .isMapped ("first" ));
176+ assertTrue (recordWithHeader .isMapped (EnumHeader . FIRST . name () ));
175177 assertFalse (recordWithHeader .isMapped ("fourth" ));
176178 }
177179
@@ -188,8 +190,8 @@ public void testIsSetInt() {
188190 @ Test
189191 public void testIsSetString () {
190192 assertFalse (record .isSet ("first" ));
191- assertTrue (recordWithHeader .isSet ("first" ));
192- assertFalse (recordWithHeader .isSet ("fourth " ));
193+ assertTrue (recordWithHeader .isSet (EnumHeader . FIRST . name () ));
194+ assertFalse (recordWithHeader .isSet ("DOES NOT EXIST " ));
193195 }
194196
195197 @ Test
@@ -315,16 +317,16 @@ public void testToString() {
315317 }
316318
317319 private void validateMap (final Map <String , String > map , final boolean allowsNulls ) {
318- assertTrue (map .containsKey ("first" ));
319- assertTrue (map .containsKey ("second" ));
320- assertTrue (map .containsKey ("third" ));
320+ assertTrue (map .containsKey (EnumHeader . FIRST . name () ));
321+ assertTrue (map .containsKey (EnumHeader . SECOND . name () ));
322+ assertTrue (map .containsKey (EnumHeader . THIRD . name () ));
321323 assertFalse (map .containsKey ("fourth" ));
322324 if (allowsNulls ) {
323325 assertFalse (map .containsKey (null ));
324326 }
325- assertEquals ("A" , map .get ("first" ));
326- assertEquals ("B" , map .get ("second" ));
327- assertEquals ("C" , map .get ("third" ));
327+ assertEquals ("A" , map .get (EnumHeader . FIRST . name () ));
328+ assertEquals ("B" , map .get (EnumHeader . SECOND . name () ));
329+ assertEquals ("C" , map .get (EnumHeader . THIRD . name () ));
328330 assertNull (map .get ("fourth" ));
329331 }
330332}
0 commit comments