@@ -0,0 +1,1632 @@
+package com.github.avarabyeu.restendpoint.async;%0A%0Aimport com.google.common.base.Function;%0Aimport com.google.common.collect.Lists;%0Aimport org.junit.Assert;%0Aimport org.junit.Test;%0A%0Aimport javax.annotation.Nullable;%0Aimport java.util.List;%0A%0Aimport static org.hamcrest.CoreMatchers.hasItem;%0Aimport static org.hamcrest.CoreMatchers.is;%0A%0A/**%0A * Tests %7B@link com.github.avarabyeu.restendpoint.async.Will%7D functionality%0A *%0A * @author avarabyeu%0A */%0Apublic class WillsTest %7B%0A%0A    public static final String TEST_STRING = %22test%22;%0A%0A    @Test%0A    public void testWill() %7B%0A        Will%3CString%3E will = Wills.will(TEST_STRING);%0A%0A        Assert.assertThat(will.isDone(), is(true));%0A        Assert.assertThat(will.isCancelled(), is(false));%0A        Assert.assertThat(will.obtain(), is(TEST_STRING));%0A    %7D%0A%0A    @Test%0A    public void testMap() %7B%0A        Will%3CString%3E will = Wills.will(TEST_STRING).map(new Function%3CString, String%3E() %7B%0A            @Nullable%0A            @Override%0A            public String apply(@Nullable String input) %7B%0A                assert input != null;%0A                return input.toUpperCase();%0A            %7D%0A        %7D);%0A%0A        Assert.assertThat(will.obtain(), is(TEST_STRING.toUpperCase()));%0A    %7D%0A%0A    @Test%0A    public void testWhenDone() %7B%0A        final List%3CString%3E results = Lists.newArrayList();%0A        Will%3CString%3E will = Wills.will(TEST_STRING).whenDone(new Action%3CString%3E() %7B%0A            @Override%0A            public void apply(String s) %7B%0A                results.add(s);%0A            %7D%0A        %7D);%0A        /* waits for done */%0A        will.obtain();%0A        Assert.assertThat(results, hasItem(TEST_STRING));%0A    %7D%0A%7D%0A

add unit tests for async package