Bläddra i källkod

Test Observable.skipWhile;

bjorn 9 år sedan
förälder
incheckning
188860ece5
2 ändrade filer med 25 tillägg och 0 borttagningar
  1. 1 0
      tests/observable.lua
  2. 24 0
      tests/skipWhile.lua

+ 1 - 0
tests/observable.lua

@@ -170,6 +170,7 @@ describe('Observable', function()
   dofile('tests/reject.lua')
   dofile('tests/reject.lua')
   dofile('tests/skip.lua')
   dofile('tests/skip.lua')
   dofile('tests/skipUntil.lua')
   dofile('tests/skipUntil.lua')
+  dofile('tests/skipWhile.lua')
   dofile('tests/take.lua')
   dofile('tests/take.lua')
   dofile('tests/takeUntil.lua')
   dofile('tests/takeUntil.lua')
 end)
 end)

+ 24 - 0
tests/skipWhile.lua

@@ -0,0 +1,24 @@
+describe('skipWhile', function()
+  it('produces an error if its parent errors', function()
+    local observable = Rx.Observable.fromValue(''):map(function(x) return x() end)
+    expect(observable.subscribe).to.fail()
+    expect(observable:skipWhile(function() end).subscribe).to.fail()
+  end)
+
+  it('uses the identity function if no predicate is specified', function()
+    local observable = Rx.Observable.fromTable({true, true, false}):skipWhile()
+    expect(observable).to.produce(false)
+  end)
+
+  it('produces values once the predicate returns false', function()
+    local function isEven(x) return x % 2 == 0 end
+    local observable = Rx.Observable.fromTable({2, 3, 4}, ipairs):skipWhile(isEven)
+    expect(observable).to.produce(3, 4)
+  end)
+
+  it('produces no values if the predicate never returns false', function()
+    local function isEven(x) return x % 2 == 0 end
+    local observable = Rx.Observable.fromTable({2, 4, 6}):skipWhile(isEven)
+    expect(observable).to.produce({})
+  end)
+end)