zip.lua 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. describe('zip', function()
  2. it('behaves as an identity function if only one Observable argument is specified', function()
  3. expect(Rx.Observable.fromRange(1, 5):zip()).to.produce(1, 2, 3, 4, 5)
  4. end)
  5. it('unsubscribes from all input observables', function()
  6. local unsubscribeA = spy()
  7. local subscriptionA = Rx.Subscription.create(unsubscribeA)
  8. local observableA = Rx.Observable.create(function(observer)
  9. return subscriptionA
  10. end)
  11. local unsubscribeB = spy()
  12. local subscriptionB = Rx.Subscription.create(unsubscribeB)
  13. local observableB = Rx.Observable.create(function(observer)
  14. return subscriptionB
  15. end)
  16. local subscription = Rx.Observable.zip(observableA, observableB):subscribe()
  17. subscription:unsubscribe()
  18. expect(#unsubscribeA).to.equal(1)
  19. expect(#unsubscribeB).to.equal(1)
  20. end)
  21. it('groups values produced by the sources by their index', function()
  22. local observableA = Rx.Observable.fromRange(1, 3)
  23. local observableB = Rx.Observable.fromRange(2, 4)
  24. local observableC = Rx.Observable.fromRange(3, 5)
  25. expect(Rx.Observable.zip(observableA, observableB, observableC)).to.produce({{1, 2, 3}, {2, 3, 4}, {3, 4, 5}})
  26. end)
  27. it('tolerates nils', function()
  28. local observableA = Rx.Observable.create(function(observer)
  29. observer:onNext(nil)
  30. observer:onNext(nil)
  31. observer:onNext(nil)
  32. observer:onCompleted()
  33. end)
  34. local observableB = Rx.Observable.fromRange(3)
  35. local onNext = observableSpy(Rx.Observable.zip(observableA, observableB))
  36. expect(#onNext).to.equal(3)
  37. end)
  38. end)