Skip to content

Commit

Permalink
Merge pull request #3366 from benlesh/refactor-generate
Browse files Browse the repository at this point in the history
refactor(generate): now just a function
  • Loading branch information
benlesh authored Mar 8, 2018
2 parents 2507518 + f7174f6 commit 2cebbcc
Show file tree
Hide file tree
Showing 3 changed files with 295 additions and 318 deletions.
41 changes: 20 additions & 21 deletions spec/observables/generate-spec.ts
Original file line number Diff line number Diff line change
@@ -1,51 +1,50 @@
import * as Rx from '../../src/internal/Rx';
import '../../src/add/observable/generate';
import { TestScheduler } from '../../src/internal/testing/TestScheduler';
import { TestScheduler } from '../../src/testing';
import { expect } from 'chai';
import { expectObservable } from '../helpers/marble-testing';
import { Subscriber } from '../../src/internal/Subscriber';
import { generate } from '../../src';

declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;

const Observable = Rx.Observable;

function err(): any {
throw 'error';
}

describe('Observable.generate', () => {
describe('generate', () => {
asDiagram('generate(1, x => false, x => x + 1)')
('should complete if condition does not meet', () => {
const source = Observable.generate(1, x => false, x => x + 1);
const source = generate(1, x => false, x => x + 1);
const expected = '|';

expectObservable(source).toBe(expected);
});

asDiagram('generate(1, x => x == 1, x => x + 1)')
('should produce first value immediately', () => {
const source = Observable.generate(1, x => x == 1, x => x + 1);
const source = generate(1, x => x == 1, x => x + 1);
const expected = '(1|)';

expectObservable(source).toBe(expected, { '1': 1 });
});

asDiagram('generate(1, x => x < 3, x => x + 1)')
('should produce all values synchronously', () => {
const source = Observable.generate(1, x => x < 3, x => x + 1);
const source = generate(1, x => x < 3, x => x + 1);
const expected = '(12|)';

expectObservable(source).toBe(expected, { '1': 1, '2': 2 });
});

it('should use result selector', () => {
const source = Observable.generate(1, x => x < 3, x => x + 1, x => (x + 1).toString());
const source = generate(1, x => x < 3, x => x + 1, x => (x + 1).toString());
const expected = '(23|)';

expectObservable(source).toBe(expected);
});

it('should allow omit condition', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x + 1,
resultSelector: x => x.toString()
Expand All @@ -56,9 +55,9 @@ describe('Observable.generate', () => {
});

it('should stop producing when unsubscribed', () => {
const source = Observable.generate(1, x => x < 4, x => x + 1);
const source = generate(1, x => x < 4, x => x + 1);
let count = 0;
const subscriber = new Rx.Subscriber<number>(
const subscriber = new Subscriber<number>(
x => {
count++;
if (x == 2) {
Expand All @@ -71,7 +70,7 @@ describe('Observable.generate', () => {
});

it('should accept a scheduler', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
condition: x => x < 4,
iterate: x => x + 1,
Expand All @@ -91,7 +90,7 @@ describe('Observable.generate', () => {
});

it('should allow minimal possible options', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x * 2
}).take(3);
Expand All @@ -101,7 +100,7 @@ describe('Observable.generate', () => {
});

it('should emit error if result selector throws', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x * 2,
resultSelector: err
Expand All @@ -112,7 +111,7 @@ describe('Observable.generate', () => {
});

it('should emit error if result selector throws on scheduler', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x * 2,
resultSelector: err,
Expand All @@ -124,7 +123,7 @@ describe('Observable.generate', () => {
});

it('should emit error after first value if iterate function throws', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: err
});
Expand All @@ -134,7 +133,7 @@ describe('Observable.generate', () => {
});

it('should emit error after first value if iterate function throws on scheduler', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: err,
scheduler: rxTestScheduler
Expand All @@ -145,7 +144,7 @@ describe('Observable.generate', () => {
});

it('should emit error if condition function throws', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x + 1,
condition: err
Expand All @@ -156,7 +155,7 @@ describe('Observable.generate', () => {
});

it('should emit error if condition function throws on scheduler', () => {
const source = Observable.generate({
const source = generate({
initialState: 1,
iterate: x => x + 1,
condition: err,
Expand Down
Loading

0 comments on commit 2cebbcc

Please sign in to comment.