Search in sources :

Example 1 with FuncApplies

use of org.cactoos.matchers.FuncApplies in project cactoos by yegor256.

the class AsyncFuncTest method runsInBackgroundWithoutFuture.

@Test
public void runsInBackgroundWithoutFuture() {
    final CountDownLatch latch = new CountDownLatch(1);
    MatcherAssert.assertThat("Can't run in the background without us touching the Future", new AsyncFunc<>(input -> {
        latch.countDown();
    }), new FuncApplies<>(true, new MatcherOf<Future<String>>(future -> {
        return latch.await(1L, TimeUnit.SECONDS);
    })));
}
Also used : TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) Future(java.util.concurrent.Future) MatcherAssert(org.hamcrest.MatcherAssert) FuncApplies(org.cactoos.matchers.FuncApplies) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Proc(org.cactoos.Proc) ThreadFactory(java.util.concurrent.ThreadFactory) Executors(java.util.concurrent.Executors) MatcherOf(org.cactoos.matchers.MatcherOf) MatcherOf(org.cactoos.matchers.MatcherOf) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 2 with FuncApplies

use of org.cactoos.matchers.FuncApplies in project cactoos by yegor256.

the class AsyncFuncTest method runsInBackgroundWithThreadFactory.

@Test
public void runsInBackgroundWithThreadFactory() {
    final String name = "secret name for thread factory";
    final ThreadFactory factory = r -> new Thread(r, name);
    final CountDownLatch latch = new CountDownLatch(1);
    MatcherAssert.assertThat("Can't run in the background with specific thread factory", new AsyncFunc<>(input -> {
        if (!input.equals(Thread.currentThread().getName())) {
            throw new IllegalStateException("Another thread factory was used");
        }
        latch.countDown();
    }, factory), new FuncApplies<>(name, new MatcherOf<Future<Void>>(future -> {
        future.get();
        return latch.getCount() == 0;
    })));
}
Also used : TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) Future(java.util.concurrent.Future) MatcherAssert(org.hamcrest.MatcherAssert) FuncApplies(org.cactoos.matchers.FuncApplies) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Proc(org.cactoos.Proc) ThreadFactory(java.util.concurrent.ThreadFactory) Executors(java.util.concurrent.Executors) MatcherOf(org.cactoos.matchers.MatcherOf) ThreadFactory(java.util.concurrent.ThreadFactory) MatcherOf(org.cactoos.matchers.MatcherOf) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 3 with FuncApplies

use of org.cactoos.matchers.FuncApplies in project cactoos by yegor256.

the class AsyncFuncTest method runsInBackgroundWithExecutorService.

@Test
public void runsInBackgroundWithExecutorService() {
    final String name = "secret name for thread executor";
    final ThreadFactory factory = r -> new Thread(r, name);
    final CountDownLatch latch = new CountDownLatch(1);
    MatcherAssert.assertThat("Can't run in the background with specific thread executor", new AsyncFunc<>(input -> {
        if (!input.equals(Thread.currentThread().getName())) {
            throw new IllegalStateException("Another thread executor was used");
        }
        latch.countDown();
    }, Executors.newSingleThreadExecutor(factory)), new FuncApplies<>(name, new MatcherOf<Future<Void>>(future -> {
        future.get();
        return latch.getCount() == 0;
    })));
}
Also used : TimeUnit(java.util.concurrent.TimeUnit) CountDownLatch(java.util.concurrent.CountDownLatch) Future(java.util.concurrent.Future) MatcherAssert(org.hamcrest.MatcherAssert) FuncApplies(org.cactoos.matchers.FuncApplies) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Proc(org.cactoos.Proc) ThreadFactory(java.util.concurrent.ThreadFactory) Executors(java.util.concurrent.Executors) MatcherOf(org.cactoos.matchers.MatcherOf) ThreadFactory(java.util.concurrent.ThreadFactory) MatcherOf(org.cactoos.matchers.MatcherOf) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Aggregations

CountDownLatch (java.util.concurrent.CountDownLatch)3 Executors (java.util.concurrent.Executors)3 Future (java.util.concurrent.Future)3 ThreadFactory (java.util.concurrent.ThreadFactory)3 TimeUnit (java.util.concurrent.TimeUnit)3 Proc (org.cactoos.Proc)3 FuncApplies (org.cactoos.matchers.FuncApplies)3 MatcherOf (org.cactoos.matchers.MatcherOf)3 MatcherAssert (org.hamcrest.MatcherAssert)3 Matchers (org.hamcrest.Matchers)3 Test (org.junit.Test)3