UNPKG

@testim/testim-cli

Version:

Command line interface for running Testing on you CI

51 lines (49 loc) 1.98 kB
/** * Generates an observable sequence by iterating a state from an initial state until the condition fails. * * @example * res = source.generateWithRelativeTime(0, * function (x) { return return true; }, * function (x) { return x + 1; }, * function (x) { return x; }, * function (x) { return 500; } * ); * * @param {Mixed} initialState Initial state. * @param {Function} condition Condition to terminate generation (upon returning false). * @param {Function} iterate Iteration step function. * @param {Function} resultSelector Selector function for results produced in the sequence. * @param {Function} timeSelector Time selector function to control the speed of values being produced each iteration, returning integer values denoting milliseconds. * @param {Scheduler} [scheduler] Scheduler on which to run the generator loop. If not specified, the timeout scheduler is used. * @returns {Observable} The generated sequence. */ Observable.generateWithRelativeTime = function (initialState, condition, iterate, resultSelector, timeSelector, scheduler) { isScheduler(scheduler) || (scheduler = timeoutScheduler); return new AnonymousObservable(function (observer) { var first = true, hasResult = false; return scheduler.scheduleRecursiveWithRelativeAndState(initialState, 0, function (state, self) { hasResult && observer.onNext(state); try { if (first) { first = false; } else { state = iterate(state); } hasResult = condition(state); if (hasResult) { var result = resultSelector(state); var time = timeSelector(state); } } catch (e) { observer.onError(e); return; } if (hasResult) { self(result, time); } else { observer.onCompleted(); } }); }); };