sample.lua 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. describe('sample', function()
  2. it('errors if no sampler is specified', function()
  3. expect(function() Rx.Observable.empty():sample() end).to.fail()
  4. end)
  5. it('produces nil values if the sampler fires before the source does', function()
  6. local sampler = Rx.Observable.fromRange(3)
  7. local onNext, onError, onCompleted = observableSpy(Rx.Observable.empty():sample(sampler))
  8. expect(#onNext).to.equal(3)
  9. expect(next(onNext[1])).to_not.exist()
  10. expect(next(onNext[2])).to_not.exist()
  11. expect(next(onNext[3])).to_not.exist()
  12. end)
  13. it('produces the latest value produced by the source when the sampler fires', function()
  14. local a = Rx.Subject.create()
  15. local b = Rx.Subject.create()
  16. local onNext, onError, onCompleted = observableSpy(a:sample(b))
  17. a:onNext(1)
  18. b:onNext('a')
  19. b:onNext('b')
  20. a:onNext(2)
  21. a:onNext(3)
  22. b:onNext('c')
  23. a:onCompleted()
  24. b:onCompleted()
  25. expect(onNext).to.equal({{1}, {1}, {3}})
  26. end)
  27. it('completes when the sampler completes', function()
  28. local a = Rx.Subject.create()
  29. local b = Rx.Subject.create()
  30. local onNext, onError, onCompleted = observableSpy(a:sample(b))
  31. a:onNext(1)
  32. a:onCompleted()
  33. b:onNext('a')
  34. b:onNext('b')
  35. b:onNext('c')
  36. expect(#onCompleted).to.equal(0)
  37. b:onCompleted()
  38. expect(#onCompleted).to.equal(1)
  39. expect(onNext).to.equal({{1}, {1}, {1}})
  40. end)
  41. it('errors when the source errors', function()
  42. local a = Rx.Observable.throw()
  43. local b = Rx.Observable.fromRange(3)
  44. local onNext, onError, onCompleted = observableSpy(a:sample(b))
  45. expect(#onError).to.equal(1)
  46. end)
  47. it('errors when the sampler errors', function()
  48. local a = Rx.Observable.fromRange(3)
  49. local b = Rx.Observable.throw()
  50. local onNext, onError, onCompleted = observableSpy(a:sample(b))
  51. expect(#onError).to.equal(1)
  52. end)
  53. end)