2017-09-17 12 views
1

FuchuでF#でランダムな単位テストを生成しようとしています。forループで府中単位テストケースを生成するには

私はVs 2017で通常のコンソールアプリケーションでコードを実行しています。

問題は、GeneraterandomTestsがコンパイルされないことです。

open Fuchu 

let OpenOrSenior xs = 
    [for (x:List<int>) in xs do 
     if x.[0] >= 55 && x.[1] > 7 then yield "Senior" else yield "Open"] 

let rand = new Random() 

type ClubMember = {Age:int;Handi:int} 

let values = [ 
     {Age = 10;Handi=2} 
     {Age=25;Handi=9} 
     {Age=75;Handi=2} 
     {Age=20;Handi=25} 
     {Age=1;Handi=1} 
     {Age=90;Handi=8} 
     {Age=79;Handi=12} 
     {Age=99;Handi=18} 
     {Age=75;Handi=8} 
     {Age=76;Handi=9} 
    ] 


let SelectMember (mem:ClubMember) = 
    match mem with 
    | x when (mem.Age >= 55) && (mem.Handi > 7) -> "Senior" 
    | _ -> "Open" 


let PutAttributesInList (mem:ClubMember) = 
    match mem with 
    | _ -> [mem.Age; mem.Handi] 

let Randomtests expected actual = testCase "Randomness" <| 
             fun _ -> Assert.Equal("expected == actual?", OpenOrSenior expected, actual) 

[<Tests>] 
let GeneraterandomTests = 

    for i in 1..10 do 
     let mutable expected:int list list = [] 
     let mutable actual: string list = [] 
     for _i in 1..5 do 
      let mutable rndNumb = rand.Next(0,9) 
      actual <- SelectMember values.[rndNumb] :: actual 
      expected <- PutAttributesInList values.[rndNumb] :: expected 
     Randomtests expected actual 
+2

だ「コンパイルされません」問題の適切な説明ではありません。 –

+0

最後の行を2つのレベルでインデント解除する必要があると思います。あなたは明らかに関数の戻り値であることを意図していましたが、今は内部のforループの中にあります。 –

+0

まだ動作しません。10回テストしたいのにまだ動作しません。 –

答えて

0

これは、Visual Studio 2017およびコンパイルやテストで動作し、それは府中

// random test cases... 
open Fuchu 
open System 
let rand = new Random() 

type ClubMember = {Age:int;Handi:int} 

let values = [ 
     {Age = 10;Handi=2} 
     {Age=25;Handi=9} 
     {Age=75;Handi=2} 
     {Age=20;Handi=25} 
     {Age=1;Handi=1} 
     {Age=90;Handi=8} 
     {Age=79;Handi=12} 
     {Age=99;Handi=18} 
     {Age=75;Handi=8} 
     {Age=76;Handi=9} 
    ] 


let SelectMember (mem:ClubMember) = 
    match mem with 
    | x when (mem.Age >= 55) && (mem.Handi > 7) -> "Senior" 
    | _ -> "Open" 


let PutAttributesInList (mem:ClubMember) = 
    match mem with 
    | _ -> [mem.Age; mem.Handi] 

let Randomtests expected actual = Assert.Equal("expected == actual?", OpenOrSenior expected, actual) 
type _testcases = {_expected : int list list ; _actual : string list} 
let mutable testCasesList = [] 

let GeneraterandomTests = 
    for i in 1..10 do 
     let mutable expected:int list list = [] 
     let mutable actual: string list = [] 
     for _i in 1..5 do 
      let mutable rndNumb = rand.Next(0,9) 
      actual <- SelectMember values.[rndNumb] :: actual 
      expected <- PutAttributesInList values.[rndNumb] :: expected 
     testCasesList <- {_expected = expected; _actual = actual} :: testCasesList 

[<Tests>] 
let __suite = 
    testList "Random Tests!" [testCase "Should return test results.." <| (fun _ -> 
      for i in testCasesList do 
       Randomtests i._expected i._actual) 
       ] 
関連する問題