16
16
import org .apache .parquet .schema .LogicalTypeAnnotation ;
17
17
import org .apache .parquet .schema .MessageType ;
18
18
import org .apache .parquet .schema .PrimitiveType ;
19
- import org .junit .Assert ;
20
19
import org .junit .Test ;
21
20
22
21
import java .util .ArrayList ;
@@ -81,13 +80,11 @@ public void shouldSetMapFieldIfStringMapPassed() {
81
80
inputMap .put ("b" , "456" );
82
81
83
82
DynamicMessage .Builder returnedBuilder = mapHandler .transformToProtoBuilder (builder , inputMap );
84
- List <MapEntry > entries = (List <MapEntry >) returnedBuilder .getField (mapFieldDescriptor );
83
+ List <DynamicMessage > entries = (List <DynamicMessage >) returnedBuilder .getField (mapFieldDescriptor );
85
84
86
85
assertEquals (2 , entries .size ());
87
- assertEquals ("a" , entries .get (0 ).getAllFields ().values ().toArray ()[0 ]);
88
- assertEquals ("123" , entries .get (0 ).getAllFields ().values ().toArray ()[1 ]);
89
- assertEquals ("b" , entries .get (1 ).getAllFields ().values ().toArray ()[0 ]);
90
- assertEquals ("456" , entries .get (1 ).getAllFields ().values ().toArray ()[1 ]);
86
+ assertArrayEquals (Arrays .asList ("a" , "123" ).toArray (), entries .get (0 ).getAllFields ().values ().toArray ());
87
+ assertArrayEquals (Arrays .asList ("b" , "456" ).toArray (), entries .get (1 ).getAllFields ().values ().toArray ());
91
88
}
92
89
93
90
@ Test
@@ -111,28 +108,29 @@ public void shouldSetMapFieldIfArrayofObjectsHavingRowsWithStringFieldsPassed()
111
108
inputRows .add (inputRow2 );
112
109
113
110
DynamicMessage .Builder returnedBuilder = mapHandler .transformToProtoBuilder (builder , inputRows .toArray ());
114
- List <MapEntry > entries = (List <MapEntry >) returnedBuilder .getField (mapFieldDescriptor );
111
+ List <DynamicMessage > entries = (List <DynamicMessage >) returnedBuilder .getField (mapFieldDescriptor );
115
112
116
113
assertEquals (2 , entries .size ());
117
- assertEquals ("a" , entries .get (0 ).getAllFields ().values ().toArray ()[0 ]);
118
- assertEquals ("123" , entries .get (0 ).getAllFields ().values ().toArray ()[1 ]);
119
- assertEquals ("b" , entries .get (1 ).getAllFields ().values ().toArray ()[0 ]);
120
- assertEquals ("456" , entries .get (1 ).getAllFields ().values ().toArray ()[1 ]);
114
+ assertArrayEquals (Arrays .asList ("a" , "123" ).toArray (), entries .get (0 ).getAllFields ().values ().toArray ());
115
+ assertArrayEquals (Arrays .asList ("b" , "456" ).toArray (), entries .get (1 ).getAllFields ().values ().toArray ());
121
116
}
122
117
123
118
@ Test
124
- public void shouldThrowExceptionIfRowsPassedAreNotOfArityTwo () {
125
- Descriptors . FieldDescriptor mapFieldDescriptor = TestBookingLogMessage . getDescriptor (). findFieldByName ( "metadata" );
126
- MapHandler mapHandler = new MapHandler ( mapFieldDescriptor );
127
- DynamicMessage . Builder builder = DynamicMessage . newBuilder ( mapFieldDescriptor . getContainingType () );
119
+ public void shouldHandleComplexTypeValuesForSerialization () throws InvalidProtocolBufferException {
120
+ Row inputValue1 = Row . of ( "12345" , Row . of ( Arrays . asList ( "a" , "b" )) );
121
+ Row inputValue2 = Row . of ( 1234123 , Row . of ( Arrays . asList ( "d" , "e" )) );
122
+ Object input = Arrays . asList ( inputValue1 , inputValue2 ). toArray ( );
128
123
129
- ArrayList <Row > inputRows = new ArrayList <>();
124
+ Descriptors .FieldDescriptor intMessageDescriptor = TestComplexMap .getDescriptor ().findFieldByName ("int_message" );
125
+ DynamicMessage .Builder builder = DynamicMessage .newBuilder (TestComplexMap .getDescriptor ());
130
126
131
- Row inputRow = new Row (3 );
132
- inputRows .add (inputRow );
133
- IllegalArgumentException exception = Assert .assertThrows (IllegalArgumentException .class ,
134
- () -> mapHandler .transformToProtoBuilder (builder , inputRows .toArray ()));
135
- assertEquals ("Row: +I[null, null, null] of size: 3 cannot be converted to map" , exception .getMessage ());
127
+ byte [] data = new MapHandler (intMessageDescriptor ).transformToProtoBuilder (builder , input ).build ().toByteArray ();
128
+ TestComplexMap actualMsg = TestComplexMap .parseFrom (data );
129
+ assertArrayEquals (Arrays .asList (12345L , 1234123L ).toArray (), actualMsg .getIntMessageMap ().keySet ().toArray ());
130
+ TestComplexMap .IdMessage idMessage = (TestComplexMap .IdMessage ) actualMsg .getIntMessageMap ().values ().toArray ()[0 ];
131
+ assertTrue (idMessage .getIdsList ().containsAll (Arrays .asList ("a" , "b" )));
132
+ idMessage = (TestComplexMap .IdMessage ) actualMsg .getIntMessageMap ().values ().toArray ()[1 ];
133
+ assertTrue (idMessage .getIdsList ().containsAll (Arrays .asList ("d" , "e" )));
136
134
}
137
135
138
136
@ Test
@@ -158,12 +156,8 @@ public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransf
158
156
159
157
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromPostProcessor (inputMap ));
160
158
161
- assertEquals ("a" , ((Row ) outputValues .get (0 )).getField (0 ));
162
- assertEquals ("123" , ((Row ) outputValues .get (0 )).getField (1 ));
163
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
164
- assertEquals ("b" , ((Row ) outputValues .get (1 )).getField (0 ));
165
- assertEquals ("456" , ((Row ) outputValues .get (1 )).getField (1 ));
166
- assertEquals (2 , ((Row ) outputValues .get (1 )).getArity ());
159
+ assertEquals (Row .of ("a" , "123" ), outputValues .get (0 ));
160
+ assertEquals (Row .of ("b" , "456" ), outputValues .get (1 ));
167
161
}
168
162
169
163
@ Test
@@ -210,12 +204,8 @@ public void shouldReturnArrayOfRowHavingFieldsSetAsInputMapAndOfSizeTwoForTransf
210
204
211
205
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
212
206
213
- assertEquals ("a" , ((Row ) outputValues .get (0 )).getField (0 ));
214
- assertEquals ("123" , ((Row ) outputValues .get (0 )).getField (1 ));
215
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
216
- assertEquals ("b" , ((Row ) outputValues .get (1 )).getField (0 ));
217
- assertEquals ("456" , ((Row ) outputValues .get (1 )).getField (1 ));
218
- assertEquals (2 , ((Row ) outputValues .get (1 )).getArity ());
207
+ assertEquals (Row .of ("a" , "123" ), outputValues .get (0 ));
208
+ assertEquals (Row .of ("b" , "456" ), outputValues .get (1 ));
219
209
}
220
210
221
211
@ Test
@@ -247,16 +237,11 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie
247
237
248
238
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
249
239
250
- assertEquals (1 , ((Row ) outputValues .get (0 )).getField (0 ));
251
- assertEquals ("123" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (0 ));
252
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (1 ));
253
- assertEquals ("abc" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (2 ));
254
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
255
- assertEquals (2 , ((Row ) outputValues .get (1 )).getField (0 ));
256
- assertEquals ("456" , ((Row ) ((Row ) outputValues .get (1 )).getField (1 )).getField (0 ));
257
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (1 )).getField (1 )).getField (1 ));
258
- assertEquals ("efg" , ((Row ) ((Row ) outputValues .get (1 )).getField (1 )).getField (2 ));
259
- assertEquals (2 , ((Row ) outputValues .get (1 )).getArity ());
240
+ Row mapEntry1 = Row .of (1 , Row .of ("123" , "" , "abc" ));
241
+ Row mapEntry2 = Row .of (2 , Row .of ("456" , "" , "efg" ));
242
+
243
+ assertEquals (mapEntry1 , outputValues .get (0 ));
244
+ assertEquals (mapEntry2 , outputValues .get (1 ));
260
245
}
261
246
262
247
@ Test
@@ -271,11 +256,8 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie
271
256
272
257
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
273
258
274
- assertEquals (0 , ((Row ) outputValues .get (0 )).getField (0 ));
275
- assertEquals ("123" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (0 ));
276
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (1 ));
277
- assertEquals ("abc" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (2 ));
278
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
259
+ Row expected = Row .of (0 , Row .of ("123" , "" , "abc" ));
260
+ assertEquals (expected , outputValues .get (0 ));
279
261
}
280
262
281
263
@ Test
@@ -290,11 +272,9 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie
290
272
291
273
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
292
274
293
- assertEquals (1 , ((Row ) outputValues .get (0 )).getField (0 ));
294
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (0 ));
295
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (1 ));
296
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (2 ));
297
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
275
+ Row expected = Row .of (1 , Row .of ("" , "" , "" ));
276
+
277
+ assertEquals (expected , outputValues .get (0 ));
298
278
}
299
279
300
280
@ Test
@@ -309,11 +289,9 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie
309
289
310
290
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
311
291
312
- assertEquals (0 , ((Row ) outputValues .get (0 )).getField (0 ));
313
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (0 ));
314
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (1 ));
315
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (2 ));
316
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
292
+ Row expected = Row .of (0 , Row .of ("" , "" , "" ));
293
+
294
+ assertEquals (expected , outputValues .get (0 ));
317
295
}
318
296
319
297
@ Test
@@ -328,11 +306,8 @@ public void shouldReturnArrayOfRowsHavingFieldsSetAsInputMapHavingComplexDataFie
328
306
329
307
List <Object > outputValues = Arrays .asList ((Object []) mapHandler .transformFromProto (dynamicMessage .getField (mapFieldDescriptor )));
330
308
331
- assertEquals (0 , ((Row ) outputValues .get (0 )).getField (0 ));
332
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (0 ));
333
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (1 ));
334
- assertEquals ("" , ((Row ) ((Row ) outputValues .get (0 )).getField (1 )).getField (2 ));
335
- assertEquals (2 , ((Row ) outputValues .get (0 )).getArity ());
309
+ Row expected = Row .of (0 , Row .of ("" , "" , "" ));
310
+ assertEquals (expected , outputValues .get (0 ));
336
311
}
337
312
338
313
@ Test
0 commit comments