/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitoutil.async;
import org.junit.After;
import org.junit.Test;
import org.mockitoutil.Stopwatch;
import java.util.concurrent.atomic.AtomicInteger;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.junit.Assert.assertEquals;
import static org.mockitoutil.Stopwatch.createNotStarted;
public class AsyncTestingTest {
private AsyncTesting async = new AsyncTesting();
private Stopwatch watch = createNotStarted();
@After
public void after() {
async.cleanUp();
}
@Test
public void sanity_test() {
//given
watch.start();
final AtomicInteger value = new AtomicInteger(0);
//when
async.runAfter(200, new Runnable() {
public void run() {
value.incrementAndGet();
}
});
//then the runnable is truly async and has not ran yet:
assertEquals(0, value.get());
//after some wait...
watch.waitFor(300);
//we actually waited for some time
watch.assertElapsedTimeIsMoreThan(200, MILLISECONDS);
//and the async has actually ran:
assertEquals(1, value.get());
}
}