Browse Source

Test Observable.filter;

bjorn 10 years ago
parent
commit
cbe3baa794
2 changed files with 25 additions and 0 deletions
  1. 24 0
      tests/filter.lua
  2. 1 0
      tests/observable.lua

+ 24 - 0
tests/filter.lua

@@ -0,0 +1,24 @@
+describe('filter', function()
+  it('uses the identity function as the predicate if none is specified', function()
+    local observable = Rx.Observable.fromTable({false, true}):filter()
+    expect(observable).to.produce(true)
+  end)
+
+  it('passes all arguments to the predicate', function()
+    local predicate = spy()
+    Rx.Observable.fromTable({{1, 2}, {3, 4, 5}}, ipairs):unpack():filter(predicate):subscribe()
+    expect(predicate).to.equal({{1, 2}, {3, 4, 5}})
+  end)
+
+  it('does not produce elements that the predicate returns false for', function()
+    local predicate = function(x) return x % 2 == 0 end
+    local observable = Rx.Observable.fromRange(1, 5):filter(predicate)
+    expect(observable).to.produce(2, 4)
+  end)
+
+  it('errors when its parent errors', function()
+    local observable = Rx.Observable.fromValue(''):map(function(x) return x() end)
+    expect(observable.subscribe).to.fail()
+    expect(observable:filter().subscribe).to.fail()
+  end)
+end)

+ 1 - 0
tests/observable.lua

@@ -155,4 +155,5 @@ describe('Observable', function()
   dofile('tests/compact.lua')
   dofile('tests/concat.lua')
   dofile('tests/distinct.lua')
+  dofile('tests/filter.lua')
 end)