Inherits from RACScheduler : NSObject
Declared in RACTestScheduler.h
RACTestScheduler.m

Overview

A special kind of scheduler that steps through virtualized time.

This scheduler class can be used in unit tests to verify asynchronous behaviors without spending significant time waiting.

This class can be used from multiple threads, but only one thread can step through the enqueued actions at a time. Other threads will wait while the scheduled blocks are being executed.

Instance Methods

after:repeatingEvery:withLeeway:schedule:

Reschedule the given block at a particular interval, starting at a specific time, and with a given leeway for deferral.

- (RACDisposable *)after:(NSDate *)date repeatingEvery:(NSTimeInterval)interval withLeeway:(NSTimeInterval)leeway schedule:(void ( ^ ) ( void ))block

Discussion

Note that blocks scheduled for a certain time will not preempt any other scheduled work that is executing at the time.

Regardless of the value of leeway, the given block may not execute exactly at when or exactly on successive intervals, whether due to system load or because another block is currently being run on the scheduler.

It is considered undefined behavior to invoke this method on the immediateScheduler.

date - The earliest time at which block should begin executing. The block may not execute immediately at this time, whether due to system load or another block on the scheduler currently being run. Cannot be nil. interval - The interval at which the block should be rescheduled, starting from date. This will use the system wall clock, to avoid skew when the computer goes to sleep. leeway - A hint to the system indicating the number of seconds that each scheduling can be deferred. Note that this is just a hint, and there may be some additional latency no matter what. block - The block to repeatedly schedule for execution. Cannot be nil.

Returns a disposable which can be used to cancel the automatic scheduling and rescheduling, or nil if cancellation is not supported.

Declared In

RACScheduler.h

after:schedule:

Schedule the given block for execution on the scheduler at or after a specific time.

- (RACDisposable *)after:(NSDate *)date schedule:(void ( ^ ) ( void ))block

Discussion

Note that blocks scheduled for a certain time will not preempt any other scheduled work that is executing at the time.

When invoked on the immediateScheduler, the calling thread will block until the specified time.

date - The earliest time at which block should begin executing. The block may not execute immediately at this time, whether due to system load or another block on the scheduler currently being run. Cannot be nil. block - The block to schedule for execution. Cannot be nil.

Returns a disposable which can be used to cancel the scheduled block before it begins executing, or nil if cancellation is not supported.

Declared In

RACScheduler.h

init

Initializes a new test scheduler.

- (instancetype)init

Declared In

RACTestScheduler.h

schedule:

Schedule the given block for execution on the scheduler.

- (RACDisposable *)schedule:(void ( ^ ) ( void ))block

Discussion

Scheduled blocks will be executed in the order in which they were scheduled.

block - The block to schedule for execution. Cannot be nil.

Returns a disposable which can be used to cancel the scheduled block before it begins executing, or nil if cancellation is not supported.

Declared In

RACScheduler.h

step

Executes the next scheduled block, if any.

- (void)step

Discussion

This method will block until the scheduled action has completed.

Declared In

RACTestScheduler.h

step:

Executes up to the next ticks scheduled blocks.

- (void)step:(NSUInteger)ticks

Discussion

This method will block until the scheduled actions have completed.

ticks - The number of scheduled blocks to execute. If there aren’t this many blocks enqueued, all scheduled blocks are executed.

Declared In

RACTestScheduler.h

stepAll

Executes all of the scheduled blocks on the receiver.

- (void)stepAll

Discussion

This method will block until the scheduled actions have completed.

Declared In

RACTestScheduler.h