18
18
19
19
import static org .metafacture .metamorph .TestHelpers .assertMorph ;
20
20
21
+ import org .junit .Assert ;
21
22
import org .junit .Rule ;
22
23
import org .junit .Test ;
23
24
import org .metafacture .framework .StreamReceiver ;
24
25
import org .mockito .Mock ;
25
26
import org .mockito .junit .MockitoJUnit ;
26
27
import org .mockito .junit .MockitoRule ;
27
28
29
+ import java .util .function .Consumer ;
30
+
28
31
/**
29
32
* Tests for class {@link FileMap}.
30
33
*
@@ -39,14 +42,16 @@ public final class FileMapTest {
39
42
@ Mock
40
43
private StreamReceiver receiver ;
41
44
45
+ private static String MAPS = "org/metafacture/metamorph/maps/" ;
46
+
42
47
private static String MORPH =
43
48
"<rules>" +
44
49
" <data source='1'>" +
45
50
" <%s='map1' />" +
46
51
" </data>" +
47
52
"</rules>" +
48
53
"<maps>" +
49
- " <filemap name='map1' files='org/metafacture/metamorph/maps/ %s' %s/>" +
54
+ " <filemap name='map1' files='" + MAPS + " %s' %s/>" +
50
55
"</maps>" ;
51
56
52
57
@ Test
@@ -206,6 +211,97 @@ public void shouldLookupValuesInBlockedGzipFileMap() {
206
211
);
207
212
}
208
213
214
+ @ Test
215
+ public void shouldLoadFile () {
216
+ assertMap (379 , i -> {
217
+ Assert .assertEquals ("Puerto Rico" , i .get ("pr" ));
218
+ Assert .assertNull (i .get ("zz" ));
219
+ });
220
+ }
221
+
222
+ @ Test
223
+ public void shouldLoadFileWithEmptyValues () {
224
+ assertMap (380 , i -> {
225
+ i .setAllowEmptyValues (true );
226
+
227
+ Assert .assertEquals ("Puerto Rico" , i .get ("pr" ));
228
+ Assert .assertEquals ("" , i .get ("zz" ));
229
+ });
230
+ }
231
+
232
+ @ Test
233
+ public void shouldLoadFileWithSeparator () {
234
+ assertMap (99 , i -> {
235
+ i .setSeparator (" " );
236
+
237
+ Assert .assertNull (i .get ("pp\t Papua" ));
238
+ Assert .assertEquals ("Rico" , i .get ("pr\t Puerto" ));
239
+ });
240
+ }
241
+
242
+ @ Test
243
+ public void shouldLoadFileWithKeyColumn () {
244
+ assertMap (21 , i -> {
245
+ i .setSeparator (" " );
246
+ i .setKeyColumn (2 );
247
+
248
+ Assert .assertEquals ("New" , i .get ("Guinea" ));
249
+ });
250
+ }
251
+
252
+ @ Test
253
+ public void shouldLoadFileWithValueColumn () {
254
+ assertMap (24 , i -> {
255
+ i .setSeparator (" " );
256
+ i .setValueColumn (2 );
257
+
258
+ Assert .assertEquals ("Guinea" , i .get ("pp\t Papua" ));
259
+ });
260
+ }
261
+
262
+ @ Test
263
+ public void shouldLoadFileWithKeyAndValueColumn () {
264
+ assertMap (66 , i -> {
265
+ i .setSeparator (" " );
266
+ i .setKeyColumn (1 );
267
+ i .setValueColumn (0 );
268
+
269
+ Assert .assertEquals ("pr\t Puerto" , i .get ("Rico" ));
270
+ });
271
+ }
272
+
273
+ @ Test
274
+ public void shouldLoadFileWithTrailingColumns () {
275
+ assertMap (149 , i -> {
276
+ i .setSeparator (" " );
277
+ i .setAllowTrailingColumns (true );
278
+
279
+ Assert .assertEquals ("New" , i .get ("pp\t Papua" ));
280
+ });
281
+ }
282
+
283
+ @ Test
284
+ public void shouldNotLoadFileWithOutOfRangeKeyColumn () {
285
+ assertMap (0 , i -> {
286
+ i .setKeyColumn (2 );
287
+ });
288
+ }
289
+
290
+ @ Test
291
+ public void shouldNotLoadFileWithOutOfRangeValueColumn () {
292
+ assertMap (0 , i -> {
293
+ i .setValueColumn (2 );
294
+ });
295
+ }
296
+
297
+ private void assertMap (final int size , final Consumer <FileMap > consumer ) {
298
+ final FileMap fileMap = new FileMap ();
299
+ fileMap .setFile (MAPS + "file-map-test-columns.txt" );
300
+
301
+ consumer .accept (fileMap );
302
+ Assert .assertEquals (size , fileMap .keySet ().size ());
303
+ }
304
+
209
305
private String buildMorph (final String data , final String options ) {
210
306
return buildMorph (data , "file-map-test.txt" , options );
211
307
}
0 commit comments