diff --git a/paket.dependencies b/paket.dependencies
index 02b7758..a8cd9bd 100644
--- a/paket.dependencies
+++ b/paket.dependencies
@@ -3,12 +3,13 @@ source http://nuget.org/api/v2
nuget FAKE
nuget SourceLink.Fake
nuget Nuget.CommandLine
-nuget FSharp.Core ~> 3.1.2
+nuget FSharp.Core ~> 4.0.0.1
nuget Rx-Experimental ~> 2.2.5
nuget Rx-Main ~> 2.2.5
nuget Rx-PlatformServices ~> 2.2.5
nuget Rx-Testing ~> 2.2.5
nuget NUnit
nuget NUnit.Runners
+nuget FsCheck.NUnit
nuget FSharp.Formatting
nuget FSharp.Compiler.Service
diff --git a/paket.lock b/paket.lock
index 6f67970..2ca9162 100644
--- a/paket.lock
+++ b/paket.lock
@@ -1,15 +1,21 @@
NUGET
- remote: http://nuget.org/api/v2
+ remote: http://www.nuget.org/api/v2
specs:
- FAKE (4.0.3)
- FSharp.Compiler.Service (1.4.0.1)
- FSharp.Core (3.1.2.5)
+ FAKE (4.12.2)
+ FsCheck (2.2.4)
+ FSharp.Core (>= 3.1.2.5)
+ FsCheck.Nunit (2.2.4)
+ FsCheck (>= 2.2.4)
+ NUnit (>= 2.6.4 < 2.7.0)
+ NUnit.Runners (>= 2.6.4 < 2.7.0)
+ FSharp.Compiler.Service (2.0.0.2)
+ FSharp.Core (4.0.0.1)
FSharp.Formatting (2.10.0)
FSharp.Compiler.Service (>= 0.0.87)
FSharpVSPowerTools.Core (1.8.0)
FSharpVSPowerTools.Core (1.8.0)
FSharp.Compiler.Service (>= 0.0.87)
- NuGet.CommandLine (2.8.6)
+ NuGet.CommandLine (3.3.0)
NUnit (2.6.4)
NUnit.Runners (2.6.4)
Rx-Core (2.2.5)
@@ -35,4 +41,4 @@ NUGET
Rx-Main (>= 2.2.5)
Rx-Testing (2.2.5)
Rx-Main (>= 2.2.5)
- SourceLink.Fake (1.0.0)
+ SourceLink.Fake (1.1.0)
diff --git a/src/FSharp.Control.Reactive.fsproj b/src/FSharp.Control.Reactive.fsproj
index 013011c..d3ef53f 100644
--- a/src/FSharp.Control.Reactive.fsproj
+++ b/src/FSharp.Control.Reactive.fsproj
@@ -55,79 +55,35 @@
+
+ True
+
-
-
-
- ..\packages\FSharp.Core\lib\net20\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll
- True
- True
-
-
-
-
+
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll
+
+ ..\packages\Rx-Core\lib\windows8\System.Reactive.Core.dll
True
True
-
-
-
+
- ..\packages\Rx-Core\lib\windows8\System.Reactive.Core.dll
+ ..\packages\Rx-Core\lib\net40\System.Reactive.Core.dll
True
True
-
+
- ..\packages\Rx-Core\lib\net40\System.Reactive.Core.dll
+ ..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
True
True
@@ -160,10 +116,10 @@
-
+
- ..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
+ ..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
True
True
@@ -187,15 +143,6 @@
-
-
-
- ..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
- True
- True
-
-
-
@@ -225,6 +172,15 @@
+
+
+
+ ..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ True
+ True
+
+
+
@@ -252,10 +208,10 @@
-
+
- ..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ ..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
True
True
@@ -279,15 +235,6 @@
-
-
-
- ..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
- True
- True
-
-
-
@@ -317,6 +264,15 @@
+
+
+
+ ..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ True
+ True
+
+
+
@@ -344,10 +300,10 @@
-
+
- ..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ ..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
True
True
@@ -371,15 +327,6 @@
-
-
-
- ..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
- True
- True
-
-
-
@@ -409,6 +356,15 @@
+
+
+
+ ..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ True
+ True
+
+
+
@@ -436,10 +392,10 @@
-
+
- ..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ ..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
True
True
@@ -463,15 +419,6 @@
-
-
-
- ..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
- True
- True
-
-
-
@@ -513,10 +460,10 @@
-
+
- ..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
True
True
@@ -528,10 +475,10 @@
-
+
- ..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
True
True
@@ -543,10 +490,10 @@
-
+
- ..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
True
True
@@ -558,10 +505,10 @@
-
+
- ..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
True
True
@@ -573,10 +520,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
True
True
@@ -588,10 +535,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
True
True
@@ -603,10 +550,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
True
True
diff --git a/src/FSharp.Control.Reactive/FSharp.Control.Reactive.fsproj b/src/FSharp.Control.Reactive/FSharp.Control.Reactive.fsproj
index 7532de1..70a75b4 100644
--- a/src/FSharp.Control.Reactive/FSharp.Control.Reactive.fsproj
+++ b/src/FSharp.Control.Reactive/FSharp.Control.Reactive.fsproj
@@ -69,7 +69,16 @@
-
+
+
+
+ ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
+ True
+ True
+
+
+
+
..\..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll
@@ -78,10 +87,10 @@
-
+
- ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
+ ..\..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll
True
True
@@ -134,6 +143,15 @@
+
+
+
+ ..\..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
+ True
+ True
+
+
+
@@ -161,10 +179,10 @@
-
+
- ..\..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
+ ..\..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
True
True
@@ -188,15 +206,6 @@
-
-
-
- ..\..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
- True
- True
-
-
-
@@ -226,6 +235,15 @@
+
+
+
+ ..\..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ True
+ True
+
+
+
@@ -253,10 +271,10 @@
-
+
- ..\..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ ..\..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
True
True
@@ -280,15 +298,6 @@
-
-
-
- ..\..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
- True
- True
-
-
-
@@ -318,6 +327,15 @@
+
+
+
+ ..\..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ True
+ True
+
+
+
@@ -345,10 +363,10 @@
-
+
- ..\..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ ..\..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
True
True
@@ -372,15 +390,6 @@
-
-
-
- ..\..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
- True
- True
-
-
-
@@ -410,6 +419,15 @@
+
+
+
+ ..\..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ True
+ True
+
+
+
@@ -437,10 +455,10 @@
-
+
- ..\..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ ..\..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
True
True
@@ -464,15 +482,6 @@
-
-
-
- ..\..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
- True
- True
-
-
-
@@ -514,10 +523,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
True
True
@@ -529,10 +538,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
True
True
@@ -544,10 +553,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
True
True
@@ -559,10 +568,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
True
True
@@ -574,10 +583,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
True
True
@@ -589,10 +598,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
True
True
@@ -604,10 +613,10 @@
-
+
- ..\..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
+ ..\..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
True
True
diff --git a/src/Observable.fs b/src/Observable.fs
index b29927c..4687628 100644
--- a/src/Observable.fs
+++ b/src/Observable.fs
@@ -560,7 +560,7 @@ module Observable =
/// Filters the observable elements of a sequence based on a predicate by
/// incorporating the element's index
let filteri predicate (source: IObservable<'T>) =
- Observable.Where( source, Func<_,_> predicate )
+ Observable.Where( source, Func<_,_,_> (fun i x -> predicate x i) )
/// Invokes a specified action after the source observable sequence
@@ -1028,12 +1028,7 @@ module Observable =
/// Maps the given observable with the given function and the
/// index of the element
let mapi (f:int -> 'Source -> 'Result) (source:IObservable<'Source>) =
- source
- |> Observable.scan ( fun (i,_) x -> (i+1,Some(x))) (-1,None)
- |> Observable.map
- ( function
- | i, Some(x) -> f i x
- | _, None -> invalidOp "Invalid state" )
+ Observable.Select (source, Func<_,_,_> (fun i x -> f x i))
/// Maps two observables to the specified function.
diff --git a/tests/FSharp.Control.Reactive.Tests.fsproj b/tests/FSharp.Control.Reactive.Tests.fsproj
index da9c547..53ec695 100644
--- a/tests/FSharp.Control.Reactive.Tests.fsproj
+++ b/tests/FSharp.Control.Reactive.Tests.fsproj
@@ -9,7 +9,7 @@
Library
FSharp.Control.Reactive.Tests
FSharp.Control.Reactive.Tests
- v4.0
+ v4.5.2
FSharp.Control.Reactive.Tests
..\
@@ -49,11 +49,23 @@
+
+ True
+
+
+ True
+
+
+ ..\packages\NUnit.Runners\tools\lib\nunit.core.dll
+
+
+ ..\packages\NUnit.Runners\tools\lib\nunit.core.interfaces.dll
+
@@ -66,55 +78,53 @@
-
+
-
- ..\packages\FSharp.Core\lib\net20\FSharp.Core.dll
+
+ ..\packages\FsCheck\lib\net45\FsCheck.dll
True
True
-
+
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll
+
+ ..\packages\FsCheck\lib\portable-net45+netcore45\FsCheck.dll
True
True
-
+
-
- ..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
+
+ ..\packages\FsCheck\lib\portable-net45+netcore45+wp8\FsCheck.dll
True
True
-
+
-
- ..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll
+
+ ..\packages\FsCheck\lib\portable-net45+netcore45+wpa81+wp8\FsCheck.dll
True
True
-
+
+
+
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll
+
+ ..\packages\FsCheck.Nunit\lib\net45\FsCheck.NUnit.Addin.dll
True
True
-
-
-
-
-
- ..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll
+
+ ..\packages\FsCheck.Nunit\lib\net45\FsCheck.NUnit.dll
True
True
@@ -147,6 +157,15 @@
+
+
+
+ ..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
+ True
+ True
+
+
+
@@ -174,10 +193,10 @@
-
+
- ..\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
+ ..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
True
True
@@ -201,15 +220,6 @@
-
-
-
- ..\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
- True
- True
-
-
-
@@ -239,6 +249,15 @@
+
+
+
+ ..\packages\Rx-Experimental\lib\net45\System.Reactive.Experimental.dll
+ True
+ True
+
+
+
@@ -266,10 +285,10 @@
-
+
- ..\packages\Rx-Experimental\lib\net45\System.Reactive.Experimental.dll
+ ..\packages\Rx-Experimental\lib\portable-windows8+net45+wp8\System.Reactive.Experimental.dll
True
True
@@ -293,15 +312,6 @@
-
-
-
- ..\packages\Rx-Experimental\lib\portable-windows8+net45+wp8\System.Reactive.Experimental.dll
- True
- True
-
-
-
@@ -331,6 +341,15 @@
+
+
+
+ ..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ True
+ True
+
+
+
@@ -358,10 +377,10 @@
-
+
- ..\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
+ ..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
True
True
@@ -385,15 +404,6 @@
-
-
-
- ..\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
- True
- True
-
-
-
@@ -423,6 +433,15 @@
+
+
+
+ ..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ True
+ True
+
+
+
@@ -450,10 +469,10 @@
-
+
- ..\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
+ ..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
True
True
@@ -477,15 +496,6 @@
-
-
-
- ..\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
- True
- True
-
-
-
@@ -515,6 +525,15 @@
+
+
+
+ ..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ True
+ True
+
+
+
@@ -542,10 +561,10 @@
-
+
- ..\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
+ ..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
True
True
@@ -569,15 +588,6 @@
-
-
-
- ..\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
- True
- True
-
-
-
@@ -619,10 +629,10 @@
-
+
- ..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
True
True
@@ -634,10 +644,10 @@
-
+
- ..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
True
True
@@ -649,10 +659,10 @@
-
+
- ..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
True
True
@@ -664,10 +674,10 @@
-
+
- ..\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
True
True
@@ -679,10 +689,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
True
True
@@ -694,10 +704,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
True
True
@@ -709,10 +719,10 @@
-
+
- ..\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
+ ..\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
True
True
@@ -762,46 +772,46 @@
-
+
- ..\packages\Rx-Testing\lib\sl5\Microsoft.Reactive.Testing.dll
+ ..\packages\Rx-Testing\lib\net45\Microsoft.Reactive.Testing.dll
True
True
-
+
True
-
+
- ..\packages\Rx-Testing\lib\windowsphone71\Microsoft.Reactive.Testing.dll
+ ..\packages\Rx-Testing\lib\sl5\Microsoft.Reactive.Testing.dll
True
True
+
+ True
+
-
+
- ..\packages\Rx-Testing\lib\windowsphone8\Microsoft.Reactive.Testing.dll
+ ..\packages\Rx-Testing\lib\windowsphone71\Microsoft.Reactive.Testing.dll
True
True
-
+
- ..\packages\Rx-Testing\lib\net45\Microsoft.Reactive.Testing.dll
+ ..\packages\Rx-Testing\lib\windowsphone8\Microsoft.Reactive.Testing.dll
True
True
-
- True
-
diff --git a/tests/FsCheckAddin.fs b/tests/FsCheckAddin.fs
new file mode 100644
index 0000000..3a349a6
--- /dev/null
+++ b/tests/FsCheckAddin.fs
@@ -0,0 +1,15 @@
+namespace FsCheck.NUnit.Examples
+
+open NUnit.Core.Extensibility
+
+open FsCheck.NUnit
+open FsCheck.NUnit.Addin
+
+[]
+type FsCheckAddin() =
+ interface IAddin with
+ override x.Install host =
+ let tcBuilder = new FsCheckTestCaseBuilder()
+ host.GetExtensionPoint("TestCaseBuilders").Install(tcBuilder)
+ true
+
diff --git a/tests/ObservableSpecs.fs b/tests/ObservableSpecs.fs
index a889f4a..1ebabf0 100644
--- a/tests/ObservableSpecs.fs
+++ b/tests/ObservableSpecs.fs
@@ -5,6 +5,7 @@ open System.Reactive.Linq
open FSharp.Control.Reactive
open Builders
open NUnit.Framework
+open FsCheck.NUnit
open Microsoft.Reactive.Testing
open System.Reactive.Subjects
open System.Reactive.Concurrency
@@ -550,4 +551,34 @@ let ``FlatMapAsync should take F# async workflows and flatmap them to observable
Assert.That(result.Count, Is.EqualTo 3)
Assert.That(result.[0], Is.EqualTo expected)
Assert.That(result.[1], Is.EqualTo expected)
- Assert.That(result.[2], Is.EqualTo expected)
\ No newline at end of file
+ Assert.That(result.[2], Is.EqualTo expected)
+
+[]
+let ``Observable.mapi should be equivalent to Array.mapi`` (items : int array) =
+ items
+ |> Observable.ofSeq
+ |> Observable.mapi (fun i x -> (i, x))
+ |> Observable.toEnumerable
+ |> Seq.toArray
+ |> (=) (items |> Array.mapi (fun i x -> (i, x)))
+
+[]
+let ``filteri should be equivalent to mapi then filter`` (items : int array) =
+ let predicate i x = (i % 2 = 0) && (x > 0)
+
+ let filtered =
+ items
+ |> Observable.ofSeq
+ |> Observable.mapi (fun i x -> (i, x))
+ |> Observable.filter (fun (i, x) -> predicate i x)
+ |> Observable.map snd
+ |> Observable.toEnumerable
+ |> Seq.toArray
+
+ let filtered' =
+ Observable.ofSeq items
+ |> Observable.filteri predicate
+ |> Observable.toEnumerable
+ |> Seq.toArray
+
+ filtered = filtered'
\ No newline at end of file
diff --git a/tests/paket.references b/tests/paket.references
index 9e1763c..163f51b 100644
--- a/tests/paket.references
+++ b/tests/paket.references
@@ -1,6 +1,7 @@
FSharp.Core
NUnit
NUnit.Runners
+FsCheck.NUnit
Rx-Core
Rx-Experimental
Rx-Interfaces