module PropertyTests open FsCheck open global.Xunit open FsCheck.Xunit open WetPancake open TestingConstants open System.Diagnostics open Helpers open InputGeneration module ``Contents Test`` = [] let ``CleanResult returns a string which ends with the correct end-token`` () = let test () = Pancake.CleanResultAsync (DefaultSentenceCount()) DefaultTestSentence |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``CleanResult returns intended number of sentences`` () = let desiredSentencesCount = (DefaultSentenceCount()) let test () = Pancake.CleanResultAsync desiredSentencesCount DefaultTestSentence |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestAllTemplateFiles does not return an empty list`` () = let test () = Pancake.RequestAllTemplateFiles () List.isEmpty (test ()) = false [] let ``RequestCleanText returns a string which ends with the correct end-token`` () = let test () = Pancake.RequestCleanTextAsync (ValidGibberishLevelInput()) 4 |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestCleanText returns intended number of sentences`` () = let desiredSentencesCount = (ValidSentencesInput()) let test () = Pancake.RequestCleanTextAsync (ValidGibberishLevelInput()) desiredSentencesCount |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestCleanTextFromFile returns a string which ends with the correct end-token when using console-waterworks-announcement`` () = let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) ConsoleWaterworks |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestCleanTextFromFile returns a string which ends with the correct end-token when using desktop-clock-info`` () = let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) DesktopClock |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestCleanTextFromFile returns a string which ends with the correct end-token when using test-post`` () = let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) TestPost |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestCleanTextFromFile returns a string which ends with the correct end-token when using word-generator`` () = let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) WordGenerator |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestCleanTextFromFile returns intended number of strings when using console-waterworks-announcement`` () = let desiredSentencesCount = (ValidSentencesInput()) let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) desiredSentencesCount ConsoleWaterworks |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestCleanTextFromFile returns intended number of strings when using desktop-clock-info`` () = let desiredSentencesCount = (ValidSentencesInput()) let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) desiredSentencesCount DesktopClock |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestCleanTextFromFile returns intended number of strings when using test-post`` () = let desiredSentencesCount = (ValidSentencesInput()) let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) desiredSentencesCount TestPost |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestCleanTextFromFile returns intended number of strings when using word-generator`` () = let desiredSentencesCount = (ValidSentencesInput()) let test () = Pancake.RequestCleanTextFromFileAsync (ValidGibberishLevelInput()) desiredSentencesCount WordGenerator |> Async.RunSynchronously |> CountSentences test () = desiredSentencesCount [] let ``RequestRandomText returns a string which ends with the correct end-token`` () = let test () = Pancake.RequestRandomTextAsync () |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestText returns a string which ends with the correct end-token`` () = let test () = Pancake.RequestTextAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestTextFromFile returns a string which ends with with the correct end-token when using console-waterwork-announcement`` () = let test () = Pancake.RequestTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) ConsoleWaterworks |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestTextFromFile returns a string which ends with with the correct end-token when using desktop-clock-info`` () = let test () = Pancake.RequestTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) DesktopClock |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestTextFromFile returns a string which ends with with the correct end-token when using test-post`` () = let test () = Pancake.RequestTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) TestPost |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``RequestTextFromFile returns a string which ends withwith the correct end-token when using word-generator`` () = let test () = Pancake.RequestTextFromFileAsync (ValidGibberishLevelInput()) (ValidSentencesInput()) WordGenerator |> Async.RunSynchronously |> EndsAsIntended test () = true [] let ``TextInFileIsValid returns true when processing the text in the template files`` () = (* The template .txt files validity have been tested above. This test is to for the function, not the .txt files. Something has gone wrong if there are not quite a lot of explicit template file tests above. This is why the .txt files are called at random and not broken down into seperate tests. *) let test () = Pancake.TextInFileIsValidAsync (ValidFileInput()) |> Async.RunSynchronously test () = true