@@ -39,6 +39,100 @@ public void setUp() {
3939 configs .put (CSVFilter .PARSER_SEPARATOR_CONFIG , ";" );
4040 }
4141
42+ @ Test
43+ public void should_extract_column_names_from_diff_order_headers () {
44+ configs .put (READER_EXTRACT_COLUMN_NAME_CONFIG , "headers" );
45+ filter .configure (configs , alias -> null );
46+
47+ RecordsIterable <TypedStruct > output = filter .apply (null , DEFAULT_STRUCT , false );
48+ Assert .assertNotNull (output );
49+ Assert .assertEquals (1 , output .size ());
50+
51+ final TypedStruct record = output .iterator ().next ();
52+ Assert .assertEquals ("value1" , record .getString ("col1" ));
53+ Assert .assertEquals ("2" , record .getString ("col2" ));
54+ Assert .assertEquals ("true" , record .getString ("col3" ));
55+
56+ final TypedStruct input1 = TypedStruct .create ()
57+ .put ("message" , "false;3;value2" )
58+ .put ("headers" , Arrays .asList ("col3;col2;col1" ));
59+ RecordsIterable <TypedStruct > output1 = filter .apply (null , input1 , false );
60+ Assert .assertNotNull (output1 );
61+ Assert .assertEquals (1 , output1 .size ());
62+
63+ final TypedStruct record1 = output1 .iterator ().next ();
64+ Assert .assertEquals ("value2" , record1 .getString ("col1" ));
65+ Assert .assertEquals ("3" , record1 .getString ("col2" ));
66+ Assert .assertEquals ("false" , record1 .getString ("col3" ));
67+
68+ final TypedStruct input2 = TypedStruct .create ()
69+ .put ("message" , "4;false;value3" )
70+ .put ("headers" , Arrays .asList ("col2;col3;col1" ));
71+
72+ RecordsIterable <TypedStruct > output2 = filter .apply (null , input2 , false );
73+ Assert .assertNotNull (output2 );
74+ Assert .assertEquals (1 , output2 .size ());
75+
76+ final TypedStruct record2 = output2 .iterator ().next ();
77+ Assert .assertEquals ("value3" , record2 .getString ("col1" ));
78+ Assert .assertEquals ("4" , record2 .getString ("col2" ));
79+ Assert .assertEquals ("false" , record2 .getString ("col3" ));
80+ }
81+
82+ @ Test
83+ public void should_extract_column_names_from_diff_order_headers_and_null_value () {
84+ configs .put (READER_EXTRACT_COLUMN_NAME_CONFIG , "headers" );
85+ filter .configure (configs , alias -> null );
86+
87+ RecordsIterable <TypedStruct > output = filter .apply (null , DEFAULT_STRUCT , false );
88+ Assert .assertNotNull (output );
89+ Assert .assertEquals (1 , output .size ());
90+
91+ final TypedStruct record = output .iterator ().next ();
92+ Assert .assertEquals ("value1" , record .getString ("col1" ));
93+ Assert .assertEquals ("2" , record .getString ("col2" ));
94+ Assert .assertEquals ("true" , record .getString ("col3" ));
95+
96+ final TypedStruct input1 = TypedStruct .create ()
97+ .put ("message" , "false;;" )
98+ .put ("headers" , Arrays .asList ("col3;col2;col1" ));
99+ RecordsIterable <TypedStruct > output1 = filter .apply (null , input1 , false );
100+ Assert .assertNotNull (output1 );
101+ Assert .assertEquals (1 , output1 .size ());
102+
103+ final TypedStruct record1 = output1 .iterator ().next ();
104+ Assert .assertNull (record1 .getString ("col1" ));
105+ Assert .assertNull (record1 .getString ("col2" ));
106+ Assert .assertEquals ("false" , record1 .getString ("col3" ));
107+ }
108+
109+ @ Test
110+ public void should_extract_column_names_from_diff_order_headers_and_diff_size () {
111+ configs .put (READER_EXTRACT_COLUMN_NAME_CONFIG , "headers" );
112+ filter .configure (configs , alias -> null );
113+
114+ RecordsIterable <TypedStruct > output = filter .apply (null , DEFAULT_STRUCT , false );
115+ Assert .assertNotNull (output );
116+ Assert .assertEquals (1 , output .size ());
117+
118+ final TypedStruct record = output .iterator ().next ();
119+ Assert .assertEquals ("value1" , record .getString ("col1" ));
120+ Assert .assertEquals ("2" , record .getString ("col2" ));
121+ Assert .assertEquals ("true" , record .getString ("col3" ));
122+
123+ final TypedStruct input1 = TypedStruct .create ()
124+ .put ("message" , "false;4;" )
125+ .put ("headers" , Arrays .asList ("col3;col2" ));
126+ RecordsIterable <TypedStruct > output1 = filter .apply (null , input1 , false );
127+ Assert .assertNotNull (output1 );
128+ Assert .assertEquals (1 , output1 .size ());
129+
130+ final TypedStruct record1 = output1 .iterator ().next ();
131+ Assert .assertEquals ("false" , record1 .getString ("col1" ));
132+ Assert .assertEquals ("4" , record1 .getString ("col2" ));
133+ Assert .assertNull (record1 .getString ("col3" ));
134+ }
135+
42136 @ Test
43137 public void should_auto_generate_schema_given_no_schema_field () {
44138 filter .configure (configs , alias -> null );
0 commit comments