Skip to content

Commit c6f2032

Browse files
committed
Add unit tests for FileMap. (#471)
1 parent 4bfbff8 commit c6f2032

File tree

3 files changed

+479
-2
lines changed

3 files changed

+479
-2
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ indent_size = 2
3434
[metafacture-io/src/test/resources/org/metafacture/io/compressed.txt]
3535
insert_final_newline = false
3636

37-
[metamorph/src/test/resources/org/metafacture/metamorph/maps/file-map-test.txt]
37+
[metamorph/src/test/resources/org/metafacture/metamorph/maps/file-map-test*.txt]
3838
trim_trailing_whitespace = false
3939

4040
[metafacture-runner/src/main/dist/config/java-options.conf]

metamorph/src/test/java/org/metafacture/metamorph/maps/FileMapTest.java

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,16 @@
1818

1919
import static org.metafacture.metamorph.TestHelpers.assertMorph;
2020

21+
import org.junit.Assert;
2122
import org.junit.Rule;
2223
import org.junit.Test;
2324
import org.metafacture.framework.StreamReceiver;
2425
import org.mockito.Mock;
2526
import org.mockito.junit.MockitoJUnit;
2627
import org.mockito.junit.MockitoRule;
2728

29+
import java.util.function.Consumer;
30+
2831
/**
2932
* Tests for class {@link FileMap}.
3033
*
@@ -39,14 +42,16 @@ public final class FileMapTest {
3942
@Mock
4043
private StreamReceiver receiver;
4144

45+
private static String MAPS = "org/metafacture/metamorph/maps/";
46+
4247
private static String MORPH =
4348
"<rules>" +
4449
" <data source='1'>" +
4550
" <%s='map1' />" +
4651
" </data>" +
4752
"</rules>" +
4853
"<maps>" +
49-
" <filemap name='map1' files='org/metafacture/metamorph/maps/%s' %s/>" +
54+
" <filemap name='map1' files='" + MAPS + "%s' %s/>" +
5055
"</maps>";
5156

5257
@Test
@@ -206,6 +211,97 @@ public void shouldLookupValuesInBlockedGzipFileMap() {
206211
);
207212
}
208213

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\tPapua"));
238+
Assert.assertEquals("Rico", i.get("pr\tPuerto"));
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\tPapua"));
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\tPuerto", 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\tPapua"));
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+
209305
private String buildMorph(final String data, final String options) {
210306
return buildMorph(data, "file-map-test.txt", options);
211307
}

0 commit comments

Comments
 (0)