merge.lua 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. describe('merge', function()
  2. it('produces values from the first observable if it is the only argument', function()
  3. local observable = Rx.Observable.fromRange(5):merge()
  4. expect(observable).to.produce(1, 2, 3, 4, 5)
  5. end)
  6. it('produces values from all input observables, in order', function()
  7. local observableA = Rx.Subject.create()
  8. local observableB = Rx.Subject.create()
  9. local merged = observableA:merge(observableB)
  10. local onNext, onError, onCompleted = observableSpy(merged)
  11. observableA:onNext('a')
  12. observableB:onNext('b')
  13. observableB:onNext('b')
  14. observableA:onNext('a')
  15. observableA:onCompleted()
  16. observableB:onCompleted()
  17. expect(onNext).to.equal({{'a'}, {'b'}, {'b'}, {'a'}})
  18. end)
  19. it('completes when all source observables complete', function()
  20. local observableA = Rx.Subject.create()
  21. local observableB = Rx.Subject.create()
  22. local complete = spy()
  23. Rx.Observable.merge(observableA, observableB):subscribe(nil, nil, complete)
  24. expect(#complete).to.equal(0)
  25. observableA:onNext(1)
  26. expect(#complete).to.equal(0)
  27. observableB:onNext(2)
  28. expect(#complete).to.equal(0)
  29. observableB:onCompleted()
  30. expect(#complete).to.equal(0)
  31. observableA:onCompleted()
  32. expect(#complete).to.equal(1)
  33. end)
  34. end)