package eu.ehri.project.indexing.converter.impl;
import com.google.common.collect.Lists;
import eu.ehri.project.indexing.converter.Converter;
import eu.ehri.project.indexing.test.StringToInteger;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
/**
* Aggregation of converters produces a single output
* stream with their results concatenated in input order.
*/
public class MultiConverterTest {
static class StringToIntegerInc implements Converter<String, Number> {
@Override
public Iterable<Number> convert(String t) throws ConverterException {
try {
Integer out = Integer.valueOf(t);
return Lists.<Number>newArrayList(out, out + 1);
} catch (NumberFormatException e) {
throw new ConverterException("conversion error", e);
}
}
}
@Test
public void testConvert() throws Exception {
List<Converter<String, ? extends Number>> converters = Lists.newArrayList();
converters.add(new StringToInteger());
converters.add(new StringToIntegerInc());
MultiConverter<String, Number> mc = new MultiConverter<>(converters);
List<Number> numbers = Lists.newArrayList(mc.convert("1"));
assertEquals(Lists.newArrayList(1, 1, 2), numbers);
}
@Test(expected = Converter.ConverterException.class)
public void testConvertWithError() throws Exception {
List<Converter<String, ? extends Number>> converters = Lists.newArrayList();
converters.add(new StringToInteger());
converters.add(new StringToIntegerInc());
MultiConverter<String, Number> mc = new MultiConverter<>(converters);
Lists.newArrayList(mc.convert("NaN"));
}
}