@Test public void testWildcards() throws Exception { CallbackCollector<Object> callback = new CallbackCollector<>(); Callback<String> strCallback = transform(callback, Functions.toStringFunction()); strCallback.call("foo"); strCallback.call("bar"); Function<Super, Class<?>> superFunction = new Function<Super, Class<?>>() { @Override @Nullable public Class<?> apply(@Nullable Super input) { return input.getClass(); } }; Callback<Super> superCallback = transform(callback, superFunction); Callback<Sub> subCallback = transform(callback, superFunction); superCallback.call(new Super()); superCallback.call(new Sub()); subCallback.call(new Sub()); assertEquals(Lists.newArrayList("foo", "bar", Super.class, Sub.class, Sub.class), callback.getItems()); }
@Test public void testSimple() throws Exception { CallbackCollector<String> callback = new CallbackCollector<>(); Callback<Integer> tested = transform(callback, new Function<Integer, String>() { @Override @Nullable public String apply(@Nullable Integer input) { return input == null ? null : Integer.toHexString(input); } }); tested.call(null); tested.call(15); tested.call(0xDEADBEEF); assertEquals(Lists.newArrayList(null, "f", "deadbeef"), callback.getItems()); }