import assert from 'assert';

describe('flatMap', () => {
  it('maps and flattens the results using the supplied callback', async () => {
    let list = [];

    await Observable.of('a', 'b', 'c').flatMap(x =>
      Observable.of(1, 2, 3).map(y => [x, y])
    ).forEach(x => list.push(x));

    assert.deepEqual(list, [
      ['a', 1],
      ['a', 2],
      ['a', 3],
      ['b', 1],
      ['b', 2],
      ['b', 3],
      ['c', 1],
      ['c', 2],
      ['c', 3],
    ]);
  });
});