Browse Source

Updated the property tests to generate new input on each new check.

Some would call that a bug fix...
Added new tests which check the content of the results.
master
Craig Oates 6 years ago
parent
commit
3d1c324068
  1. 76
      TestCentre/PropertyTests.fs
  2. 53
      TestCentre/UnitTests.fs
  3. 5
      WetPancake/DataServices.fs
  4. 1
      WetPancake/SystemServices.fs

76
TestCentre/PropertyTests.fs

@ -10,69 +10,97 @@
module ``Null Tests`` =
[<Property>]
let ``Request Random Text does not return null when using the built-in random settings`` () =
let test = Pancake.RequestRandomTextAsync()
let ``Request Random Text does not return null when using the built-in random settings`` () =
let test =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Request Text does not return null when using fixed input parameters`` () =
let gibberishLevel = System.Random().Next(2, 10)
let totalSentences = System.Random().Next(2, 10)
let test = Pancake.RequestTextAsync gibberishLevel totalSentences
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextAsync (gibberishLevel()) (totalSentences())
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Request Text does not return null when using a random gibberish level`` () =
let gibberishLevel = System.Random().Next(2, 10)
let test = Pancake.RequestTextAsync gibberishLevel 10
let gibberishLevel () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextAsync (gibberishLevel()) 10
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Request Text does not return null when using a random sentence count`` () =
let totalSentences = System.Random().Next(2, 10)
let test () = Pancake.RequestTextAsync 5 totalSentences
let totalSentences () = System.Random().Next(2, 10)
let test () =
Pancake.RequestTextAsync 5 (totalSentences())
|> Async.RunSynchronously
let results () = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Using desktop-clock-info does not return null`` () =
let gibberishLevel = System.Random().Next(2, 10)
let totalSentences = System.Random().Next(2, 10)
let test = Pancake.RequestTextFromFileAsync gibberishLevel totalSentences DesktopClock
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextFromFileAsync (gibberishLevel()) (totalSentences()) DesktopClock
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Using console-waterworks-announcement does not return null`` () =
let gibberishLevel = System.Random().Next(2, 10)
let totalSentences = System.Random().Next(2, 10)
let test = Pancake.RequestTextFromFileAsync gibberishLevel totalSentences ConsoleWaterworks
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextFromFileAsync (gibberishLevel()) (totalSentences()) ConsoleWaterworks
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Using word-generator does not return null`` () =
let gibberishLevel = System.Random().Next(2, 10)
let totalSentences = System.Random().Next(2, 10)
let test = Pancake.RequestTextFromFileAsync gibberishLevel totalSentences WordGenerator
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextFromFileAsync (gibberishLevel()) (totalSentences()) WordGenerator
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
[<Property>]
let ``Using test-post does not return null`` () =
let gibberishLevel = System.Random().Next(2, 10)
let totalSentences = System.Random().Next(2, 10)
let test = Pancake.RequestTextFromFileAsync gibberishLevel totalSentences TestPost
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextFromFileAsync (gibberishLevel()) (totalSentences()) TestPost
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
module ``Contents Test`` =
[<Property>]
let ``RequestRandomText produces content with at least one full stop`` () =
let test = Pancake.RequestRandomTextAsync() |> Async.RunSynchronously
let results = Assert.Contains(".", test)
let ``RequestRandomText produces content which ends with a full stop`` () =
let test =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
let results = Assert.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``RequestTest produces content which ends with a full stop`` () =
let gibberishLevel () = System.Random().Next(2, 10)
let totalSentences () = System.Random().Next(2, 10)
let test =
Pancake.RequestTextAsync (gibberishLevel()) (totalSentences())
|> Async.RunSynchronously
let results = Assert.EndsWith(".", test)
Check.Quick results

53
TestCentre/UnitTests.fs

@ -73,7 +73,56 @@
Assert.NotNull result
module ``Contents Tests`` =
[<Fact>]
let ``RequestRandomText returns a string which contains a full stop`` () =
let result =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
Assert.Contains(".", result)
[<Fact>]
let ``RequestText returns a string which contains a full stop`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result =
Pancake.RequestTextAsync gibberishLevel totalSentences
|> Async.RunSynchronously
Assert.Contains(".", result)
[<Fact>]
let ``RequestTextFromFile returns a string which contains a full stop when using desktop-clock-info`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result =
Pancake.RequestTextFromFileAsync gibberishLevel totalSentences DesktopClock
|> Async.RunSynchronously
Assert.Contains(".", result)
[<Fact>]
let ``RequestRandomText returns a string which contains at least one full stop`` () =
let result = Pancake.RequestRandomTextAsync () |> Async.RunSynchronously
let ``RequestTextFromFile returns a string which contains a full stop when using console-waterworks-announcement`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result =
Pancake.RequestTextFromFileAsync gibberishLevel totalSentences ConsoleWaterworks
|> Async.RunSynchronously
Assert.Contains(".", result)
[<Fact>]
let ``RequestTextFromFile returns a string which contains a full stop when using word-generator`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result =
Pancake.RequestTextFromFileAsync gibberishLevel totalSentences WordGenerator
|> Async.RunSynchronously
Assert.Contains(".", result)
[<Fact>]
let ``RequestTextFromFile returns a string which contains a full stop using test-post`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result =
Pancake.RequestTextFromFileAsync gibberishLevel totalSentences TestPost
|> Async.RunSynchronously
Assert.Contains(".", result)

5
WetPancake/DataServices.fs

@ -5,6 +5,7 @@
open DataProcessing
open DataCleaning
open System.Threading
open System
let rec GenerateMarkovChain (map: Map<string, string List>) (state:string) chain =
if map.ContainsKey state then
@ -18,8 +19,8 @@
|> ConcatToString
GenerateMarkovChain map (CombineWords currentWords nextChoice) (nextChoice :: chain)
else
let fallbackChoice = (PickRandomItem map).Key
fallbackChoice + "." :: chain
let fallbackChoice = (PickRandomItem map).Key
String.Format("{0}.", fallbackChoice) :: chain
let GenerateMarkovSentence map start =
GenerateMarkovChain map start [start]

1
WetPancake/SystemServices.fs

@ -1,7 +1,6 @@
module internal SystemServices
open System
open System.Collections.Generic
let PickRandomNumber min max = Random().Next(min, max)

Loading…
Cancel
Save