Skip to content

Instantly share code, notes, and snippets.

@igstan
Created July 19, 2013 12:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igstan/d5b8db7b43f49dd87382 to your computer and use it in GitHub Desktop.
Save igstan/d5b8db7b43f49dd87382 to your computer and use it in GitHub Desktop.
test('filter stream of data points based on selected tags', function () {
// Model the user selecting new tags in the UI. A new tag is selected
// each 100 time units.
var selectedTags = this.scheduler.createHotObservable(
onNext(210, ['tag-001']),
onNext(310, ['tag-001', 'tag-002']),
onNext(410, ['tag-001', 'tag-002', 'tag-003']),
onCompleted(420)
);
var dataPoints = this.scheduler.createHotObservable(
onNext(200, { name: 'tag-001' }),
onNext(210, { name: 'tag-002' }),
onNext(220, { name: 'tag-003' }),
onNext(230, { name: 'tag-001' }),
onNext(240, { name: 'tag-002' }),
onNext(250, { name: 'tag-003' }),
onNext(310, { name: 'tag-001' }),
onNext(320, { name: 'tag-002' }),
onNext(330, { name: 'tag-003' }),
onNext(340, { name: 'tag-001' }),
onNext(350, { name: 'tag-002' }),
onNext(360, { name: 'tag-003' }),
onNext(410, { name: 'tag-001' }),
onNext(420, { name: 'tag-002' }),
onNext(430, { name: 'tag-003' }),
onNext(440, { name: 'tag-001' }),
onNext(450, { name: 'tag-002' }),
onNext(460, { name: 'tag-003' }),
onCompleted(470)
);
var results = this.scheduler.startWithCreate(function () {
return selectedTags
.map(function (tags) {
return dataPoints.filter(function (d) {
return tags.indexOf(d.name) > -1;
});
})
.switchLatest()
.map(function (d) {
return d.name;
});
});
var expectedMessages = [
onNext(230, 'tag-001'),
onNext(310, 'tag-001'),
onNext(320, 'tag-002'),
onNext(340, 'tag-001'),
onNext(350, 'tag-002'),
onNext(410, 'tag-001'),
onNext(420, 'tag-002'),
onNext(430, 'tag-003'),
onNext(440, 'tag-001'),
onNext(450, 'tag-002'),
onNext(460, 'tag-003'),
onCompleted(470)
];
assertEqual(expectedMessages, results.messages);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment