namespace Consumer open FsUnitTyped open NUnit.Framework [] module TestCaseData = let testCasesSeen = ResizeArray () let dataSourceRaw = [ 3, "hi", [| 4.0 |] ; -10, "bye", null ] let dataSource = dataSourceRaw |> List.map TestCaseData [] let ``Consume test data`` (i : int, s : string, arr : float[]) = lock testCasesSeen (fun () -> testCasesSeen.Add (i, s, arr)) let multipleSources = ResizeArray () let dataSource2Raw = [ 5, "egg", [| -1.3 ; 4.5 |] ; 100, "mycroft", [||] ] let dataSource2 = dataSource2Raw |> List.map TestCaseData [] [] let ``Consume test data from multiple sources`` (i : int, s : string, arr : float[]) = lock multipleSources (fun () -> multipleSources.Add (i, s, arr)) let optionalData = [ Some "hi" ; None ] |> List.map TestCaseData [] let ``Consume options, TestCaseData`` (s : string option) : unit = s |> shouldEqual s let optionalRaw = [ Some "hi" ; None ] [] let ``Consume options, raw`` (s : string option) : unit = s |> shouldEqual s [] let bug66 (i : int, j : int, k : int, l : bool) = i |> shouldEqual 30 j |> shouldEqual 15 k |> shouldEqual 44 l |> shouldEqual false [] let tearDown () = testCasesSeen |> Seq.toList |> List.sortBy (fun (a, _, _) -> a) |> shouldEqual (dataSourceRaw |> List.sortBy (fun (a, _, _) -> a)) multipleSources |> Seq.toList |> List.sortBy (fun (a, _, _) -> a) |> shouldEqual ((dataSourceRaw @ dataSource2Raw) |> List.sortBy (fun (a, _, _) -> a))