diff --git a/src/main/java/io/reactivex/schedulers/TestScheduler.java b/src/main/java/io/reactivex/schedulers/TestScheduler.java index b2ca366978..44272ffc25 100644 --- a/src/main/java/io/reactivex/schedulers/TestScheduler.java +++ b/src/main/java/io/reactivex/schedulers/TestScheduler.java @@ -35,6 +35,25 @@ public final class TestScheduler extends Scheduler { // Storing time in nanoseconds internally. volatile long time; + /** + * Creates a new TestScheduler with initial virtual time of zero. + */ + public TestScheduler() { + // No-op. + } + + /** + * Creates a new TestScheduler with the specified initial virtual time. + * + * @param delayTime + * the point in time to move the Scheduler's clock to + * @param unit + * the units of time that {@code delayTime} is expressed in + */ + public TestScheduler(long delayTime, TimeUnit unit) { + time = unit.toNanos(delayTime); + } + static final class TimedRunnable implements Comparable { final long time; diff --git a/src/test/java/io/reactivex/schedulers/TestSchedulerTest.java b/src/test/java/io/reactivex/schedulers/TestSchedulerTest.java index 803bd50522..2d5484cbb3 100644 --- a/src/test/java/io/reactivex/schedulers/TestSchedulerTest.java +++ b/src/test/java/io/reactivex/schedulers/TestSchedulerTest.java @@ -253,5 +253,10 @@ public void workerDisposed() { assertTrue(w.isDisposed()); } - + @Test + public void constructorTimeSetsTime() { + TestScheduler ts = new TestScheduler(5, TimeUnit.SECONDS); + assertEquals(5, ts.now(TimeUnit.SECONDS)); + assertEquals(5000, ts.now(TimeUnit.MILLISECONDS)); + } }