declare module Rx { export interface VirtualTimeScheduler extends IScheduler { /** * Adds a relative time value to an absolute time value. * @param {Number} absolute Absolute virtual time value. * @param {Number} relative Relative virtual time value to add. * @return {Number} Resulting absolute virtual time sum value. */ add(from: TAbsolute, by: TRelative): TAbsolute; /** * Converts an absolute time to a number * @param {Any} The absolute time. * @returns {Number} The absolute time in ms */ toAbsoluteTime(duetime: TAbsolute): number; /** * Converts the TimeSpan value to a relative virtual time value. * @param {Number} timeSpan TimeSpan value to convert. * @return {Number} Corresponding relative virtual time value. */ toRelativeTime(duetime: number): TRelative; /** * Starts the virtual time scheduler. */ start(): IDisposable; /** * Stops the virtual time scheduler. */ stop(): void; /** * Advances the scheduler's clock to the specified time, running all work till that point. * @param {Number} time Absolute time to advance the scheduler's clock to. */ advanceTo(time: TAbsolute): void; /** * Advances the scheduler's clock by the specified relative time, running all work scheduled for that timespan. * @param {Number} time Relative time to advance the scheduler's clock by. */ advanceBy(time: TRelative): void; /** * Advances the scheduler's clock by the specified relative time. * @param {Number} time Relative time to advance the scheduler's clock by. */ sleep(time: TRelative): void; isEnabled: boolean; /** * Gets the next scheduled item to be executed. * @returns {ScheduledItem} The next scheduled item. */ getNext(): internals.ScheduledItem; } export interface Subscription { /** * Checks whether the given subscription is equal to the current instance. * @param other Subscription object to check for equality. * @returns {Boolean} true if both objects are equal; false otherwise. */ equals(other: Subscription): boolean; /** * Returns a string representation of the current Subscription value. * @returns {String} String representation of the current Subscription value. */ toString(): string; } interface SubscriptionStatic { /** * Creates a new subscription object with the given virtual subscription and unsubscription time. * * @constructor * @param {Number} subscribe Virtual time at which the subscription occurred. * @param {Number} unsubscribe Virtual time at which the unsubscription occurred. */ new (subscribeAt: number, unsubscribeAt?: number): Subscription; } export var Subscription: SubscriptionStatic; export interface Recorded { /** * Checks whether the given recorded object is equal to the current instance. * * @param {Recorded} other Recorded object to check for equality. * @returns {Boolean} true if both objects are equal; false otherwise. */ equals(other: Recorded): boolean; /** * Returns a string representation of the current Recorded value. * * @returns {String} String representation of the current Recorded value. */ toString(): string; time: number; value: any; } interface RecordedStatic { /** * Creates a new object recording the production of the specified value at the given virtual time. * * @constructor * @param {Number} time Virtual time the value was produced on. * @param {Mixed} value Value that was produced. * @param {Function} comparer An optional comparer. */ new (time: number, value: any, equalityComparer?: _Comparer): Recorded; } export var Recorded: RecordedStatic; export var ReactiveTest: { /** Default virtual time used for creation of observable sequences in unit tests. */ created: number; /** Default virtual time used to subscribe to observable sequences in unit tests. */ subscribed: number; /** Default virtual time used to dispose subscriptions in unit tests. */ disposed: number; /** * Factory method for an OnNext notification record at a given time with a given value or a predicate function. * * 1 - ReactiveTest.onNext(200, 42); * 2 - ReactiveTest.onNext(200, function (x) { return x.length == 2; }); * * @param ticks Recorded virtual time the OnNext notification occurs. * @param value Recorded value stored in the OnNext notification or a predicate. * @return Recorded OnNext notification. */ onNext(ticks: number, value: any): Recorded; /** * Factory method for an OnNext notification record at a given time with a given value or a predicate function. * * 1 - ReactiveTest.onNext(200, 42); * 2 - ReactiveTest.onNext(200, function (x) { return x.length == 2; }); * * @param ticks Recorded virtual time the OnNext notification occurs. * @param value Recorded value stored in the OnNext notification or a predicate. * @return Recorded OnNext notification. */ onNext(ticks: number, predicate: (value: any) => boolean): Recorded; /** * Factory method for an OnError notification record at a given time with a given error. * * 1 - ReactiveTest.onNext(200, new Error('error')); * 2 - ReactiveTest.onNext(200, function (e) { return e.message === 'error'; }); * * @param ticks Recorded virtual time the OnError notification occurs. * @param exception Recorded exception stored in the OnError notification. * @return Recorded OnError notification. */ onError(ticks: number, exception: any): Recorded; /** * Factory method for an OnError notification record at a given time with a given error. * * 1 - ReactiveTest.onNext(200, new Error('error')); * 2 - ReactiveTest.onNext(200, function (e) { return e.message === 'error'; }); * * @param ticks Recorded virtual time the OnError notification occurs. * @param exception Recorded exception stored in the OnError notification. * @return Recorded OnError notification. */ onError(ticks: number, predicate: (exception: any) => boolean): Recorded; /** * Factory method for an OnCompleted notification record at a given time. * * @param ticks Recorded virtual time the OnCompleted notification occurs. * @return Recorded OnCompleted notification. */ onCompleted(ticks: number): Recorded; /** * Factory method for a subscription record based on a given subscription and disposal time. * * @param start Virtual time indicating when the subscription was created. * @param end Virtual time indicating when the subscription was disposed. * @return Subscription object. */ subscribe(subscribeAt: number, unsubscribeAt?: number): Subscription; } export interface MockObserver extends Observer { messages: Recorded[]; } interface MockObserverStatic extends ObserverStatic { new (scheduler: IScheduler): MockObserver; } export var MockObserver: MockObserverStatic; export interface TestScheduler extends VirtualTimeScheduler { /** * Creates a cold observable using the specified timestamped notification messages either as an array or arguments. * @param messages Notifications to surface through the created sequence at their specified virtual time offsets from the sequence subscription time. * @return Cold observable sequence that can be used to assert the timing of subscriptions and notifications. */ createColdObservable(...records: Recorded[]): Observable; /** * Creates a hot observable using the specified timestamped notification messages either as an array or arguments. * @param messages Notifications to surface through the created sequence at their specified absolute virtual times. * @return Hot observable sequence that can be used to assert the timing of subscriptions and notifications. */ createHotObservable(...records: Recorded[]): Observable; /** * Creates an observer that records received notification messages and timestamps those. * @return Observer that can be used to assert the timing of received notifications. */ createObserver(): MockObserver; /** * Creates a resolved promise with the given value and ticks * @param {Number} ticks The absolute time of the resolution. * @param {Any} value The value to yield at the given tick. * @returns {MockPromise} A mock Promise which fulfills with the given value. */ createResolvedPromise(ticks: number, value: T): IPromise; /** * Creates a rejected promise with the given reason and ticks * @param {Number} ticks The absolute time of the resolution. * @param {Any} reason The reason for rejection to yield at the given tick. * @returns {MockPromise} A mock Promise which rejects with the given reason. */ createRejectedPromise(ticks: number, value: T): IPromise; /** * Starts the test scheduler and uses the specified virtual times to invoke the factory function, subscribe to the resulting sequence, and dispose the subscription. * * @param create Factory method to create an observable sequence. * @param created Virtual time at which to invoke the factory to create an observable sequence. * @param subscribed Virtual time at which to subscribe to the created observable sequence. * @param disposed Virtual time at which to dispose the subscription. * @return Observer with timestamped recordings of notification messages that were received during the virtual time window when the subscription to the source sequence was active. */ startWithTiming(create: () => Observable, createdAt: number, subscribedAt: number, disposedAt: number): MockObserver; /** * Starts the test scheduler and uses the specified virtual time to dispose the subscription to the sequence obtained through the factory function. * Default virtual times are used for factory invocation and sequence subscription. * * @param create Factory method to create an observable sequence. * @param disposed Virtual time at which to dispose the subscription. * @return Observer with timestamped recordings of notification messages that were received during the virtual time window when the subscription to the source sequence was active. */ startWithDispose(create: () => Observable, disposedAt: number): MockObserver; /** * Starts the test scheduler and uses default virtual times to invoke the factory function, to subscribe to the resulting sequence, and to dispose the subscription. * * @param create Factory method to create an observable sequence. * @return Observer with timestamped recordings of notification messages that were received during the virtual time window when the subscription to the source sequence was active. */ startWithCreate(create: () => Observable): MockObserver; } export var TestScheduler: { new (): TestScheduler; } } declare module "rx.core.testing" { export = Rx; }