package org.jooby.issues;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.jooby.Route;
import org.jooby.Route.Mapper;
import org.junit.Test;
public class Issue384 {
static class M implements Route.Mapper<Integer> {
@Override
public Object map(final Integer value) throws Throwable {
return value;
}
}
@Test
public void defaultRouteMapperName() {
Route.Mapper<Integer> intMapper = (final Integer v) -> v * 2;
assertTrue(intMapper.name().startsWith("issue384"));
assertEquals("m", new M().name());
assertTrue(new Route.Mapper<String>() {
@Override
public Object map(final String value) throws Throwable {
return value;
};
}.name().startsWith("issue384"));
}
@Test
public void routeFactory() {
Mapper<Integer> intMapper = Route.Mapper.create("x", (final Integer v) -> v * 2);
assertEquals("x", intMapper.name());
assertEquals("x", intMapper.toString());
}
@Test
public void chain() throws Throwable {
Mapper<Integer> intMapper = Route.Mapper.create("int", (final Integer v) -> v * 2);
Mapper<String> strMapper = Route.Mapper.create("str", v -> "{" + v + "}");
assertEquals("int>str", Route.Mapper.chain(intMapper, strMapper).name());
assertEquals("str>int", Route.Mapper.chain(strMapper, intMapper).name());
assertEquals(8, Route.Mapper.chain(intMapper, intMapper).map(2));
}
}