Browse Source

Merge pull request #5 from CraigOates/0.5-p1

0.5 p1 into master.
master
Craig Oates 6 years ago committed by GitHub
parent
commit
bfe328b48b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 256
      TestCentre/PropertyTests.fs
  2. 240
      TestCentre/UnitTests.fs
  3. 5
      WetPancake/DataServices.fs
  4. 56
      WetPancake/ProductServices.fs
  5. 48
      WetPancake/Script.fsx
  6. 1
      WetPancake/SystemServices.fs
  7. 23
      WetPancakeCLI/ConsoleCommands.cs
  8. 1
      WetPancakeCLI/WetPancakeCLI.csproj

256
TestCentre/PropertyTests.fs

@ -5,63 +5,201 @@
open FsCheck.Xunit
open WetPancake
open TestingConstants
open System.Diagnostics
module ``Null Tests`` =
[<Property>]
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())
|> 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
|> 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())
|> 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
|> 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
|> 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
|> 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
|> Async.RunSynchronously
let results = Assert.NotNull test
Check.Quick results
module ``Contents Test`` =
[<Property>]
let ``RequestRandomText returns a string which contains a full stop`` () =
let test =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
let results = Assert.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestText returns a string which contains 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.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which contains a full stop when using console-waterworks-announcement`` () =
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.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which contains a full stop when using desktop-clock-info`` () =
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.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which contains a full stop when using test-post`` () =
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.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which contains a full stop when using word-generator`` () =
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.Contains(".", test)
Check.Quick results
[<Property>]
let ``RequestRandomText returns a string which ends with a full stop`` () =
let test =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
let results = Assert.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``RequestTest returns a string 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
[<Property>]
let ``RequestTextFromFile returns a string which ends with a full stop when using console-waterwork-announcement`` () =
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.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which ends with a full stop when using desktop-clock-info`` () =
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.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which ends with a full stop when using test-post`` () =
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.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``RequestTextFromFile returns a string which ends with a full stop when using word-generator`` () =
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.EndsWith(".", test)
Check.Quick results
[<Property>]
let ``Request Random Text does not return null when using the built-in random settings`` () =
let test = Pancake.RequestRandomText
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.RequestText gibberishLevel totalSentences
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.RequestText gibberishLevel 10
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.RequestText 5 totalSentences
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.RequestTextFromFile gibberishLevel totalSentences DesktopClock
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.RequestTextFromFile gibberishLevel totalSentences ConsoleWaterworks
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.RequestTextFromFile gibberishLevel totalSentences WordGenerator
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.RequestTextFromFile gibberishLevel totalSentences TestPost
let results = Assert.NotNull test
Check.Quick results

240
TestCentre/UnitTests.fs

@ -1,70 +1,180 @@
module ``Unit Tests``
module ``Unit Tests``
open Xunit
open WetPancake
open TestingConstants
open System.IO
(* These tests check to see if the .txt files exists in the Test Centre project.
The WetPancake library does not expose the file access functions so the .txt files are mirrored here (in Test Centre).
The mirroring, also, doubles up as sample files to pass into WetPancake. *)
[<Fact>]
let ``desktop-clock-info can be found`` () =
let result = File.Exists DesktopClock
Assert.Equal(true, result);
[<Fact>]
let ``console-waterworks-announcements can be found`` () =
let result = File.Exists ConsoleWaterworks
Assert.Equal(true, result);
[<Fact>]
let ``word-generator can be found`` () =
let result = File.Exists WordGenerator
Assert.Equal(true, result);
[<Fact>]
let ``test-post can be found`` () =
let result = File.Exists TestPost
Assert.Equal(true, result)
[<Fact>]
let ``RequestRandomText does not return a null`` () =
let result = Pancake.RequestRandomText
Assert.NotNull result
[<Fact>]
let ``RequestText does not return a null`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result () = Pancake.RequestText gibberishLevel totalSentences
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null when using desktop-clock-info`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result = Pancake.RequestTextFromFile gibberishLevel totalSentences DesktopClock
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null when using console-waterworks-announcement`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result = Pancake.RequestTextFromFile gibberishLevel totalSentences ConsoleWaterworks
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null when using word-generator`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result = Pancake.RequestTextFromFile gibberishLevel totalSentences WordGenerator
Assert.NotNull result
[<Fact>]
let ``RequestTestFromFile does not generate a null when using test-post`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result = Pancake.RequestTextFromFile gibberishLevel totalSentences TestPost
Assert.NotNull result
module ``File Access Tests`` =
(* These tests check to see if the .txt files exists in the Test Centre project.
The WetPancake library does not expose the file access functions so the .txt files are mirrored here (in Test Centre).
The mirroring, also, doubles up as sample files to pass into WetPancake. *)
[<Fact>]
let ``desktop-clock-info can be found`` () =
let result = File.Exists DesktopClock
Assert.Equal(true, result);
[<Fact>]
let ``console-waterworks-announcements can be found`` () =
let result = File.Exists ConsoleWaterworks
Assert.Equal(true, result);
[<Fact>]
let ``word-generator can be found`` () =
let result = File.Exists WordGenerator
Assert.Equal(true, result);
[<Fact>]
let ``test-post can be found`` () =
let result = File.Exists TestPost
Assert.Equal(true, result)
module ``Null Tests`` =
[<Fact>]
let ``RequestRandomText does not return a null`` () =
let result = Pancake.RequestRandomTextAsync ()
Assert.NotNull result
[<Fact>]
let ``RequestText does not return a null`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result () = Pancake.RequestTextAsync gibberishLevel totalSentences
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null 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
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null 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
Assert.NotNull result
[<Fact>]
let ``RequestTextFromFile does not return a null 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
Assert.NotNull result
[<Fact>]
let ``RequestTestFromFile does not generate a null when using test-post`` () =
let gibberishLevel = System.Random().Next(2, 20)
let totalSentences = System.Random().Next(2, 20)
let result = Pancake.RequestTextFromFileAsync gibberishLevel totalSentences TestPost
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 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 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 ``RequestTextFromFile returns a string which contains a full stop when 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)
[<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 ``RequestRandomText returns a string which ends with a full stop`` () =
let result =
Pancake.RequestRandomTextAsync ()
|> Async.RunSynchronously
Assert.EndsWith(".", result)
[<Fact>]
let ``RequestText returns a string which ends with 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.EndsWith(".", result)
[<Fact>]
let ``RequestTextFromFile returns a string which ends with 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.EndsWith(".", result)
[<Fact>]
let ``RequestTextFromFile returns a sting which ends with 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.EndsWith(".", result)
[<Fact>]
let ``RequestTextFromFile returns a sting which ends with a full stop when 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.EndsWith(".", result)
[<Fact>]
let ``RequestTextFromFile returns a sting which ends with 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.EndsWith(".", 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]

56
WetPancake/ProductServices.fs

@ -8,30 +8,38 @@ module Pancake =
open DataStructuring
open DataServices
let RequestRandomText() =
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups (PickRandomNumber 2 10)
|> GenerateMap
GenerateMarkovText (PickRandomNumber 2 10) data
let RequestText (gibberishLevel: int) (sentences: int) =
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
GenerateMarkovText sentences data
let RequestTextFromFile (gibberishLevel: int) (sentences: int) (filePath: string) =
let data =
LoadFile filePath
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
GenerateMarkovText sentences data
let RequestRandomTextAsync() =
async {
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups (PickRandomNumber 2 10)
|> GenerateMap
return GenerateMarkovText (PickRandomNumber 2 10) data
}
let RequestTextAsync (gibberishLevel: int) (sentences: int) =
async {
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
}
let RequestTextFromFileAsync (gibberishLevel: int) (sentences: int) (filePath: string) =
async {
let data =
LoadFile filePath
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
}
// Add Checks to make sure the client is passing in a .txt file?
// Leave for the client to check?
// Give the client a function to check (and throw) if not handed a .txt file?
(* Should the library provide list of the available default txt files?

48
WetPancake/Script.fsx

@ -9,7 +9,6 @@
#load "DataServices.fs"
#load "ProductServices.fs"
open System
open SystemServices
open DataAccess
open DataCleaning
@ -17,7 +16,6 @@ open DataProcessing
open DataStructuring
open DataServices
open WetPancake
open System.Data
// System Services
let ss_number = PickRandomNumber 10
@ -28,18 +26,6 @@ let ss_items2 =
let items = seq { for i in 0 .. 0 -> "." }
printfn "ss_items2 length is %i" (Seq.length items)
PickRandomItem items
(*
This is throwing errors so leaving as a comment for the moment.
let ss_items3 =
let items =
[ "Key 1", ["Value 1-1"; "Value 1-2"];
"Key 2", ["Value 2-1"; "Value 2-2"];
"Key 3", ["Value 3-1"; "Value 3-2"]; ]
|> Map.ofList
printfn "ss_items3 count is %i" items.Count
let result = PickStartWords items
printfn "ss_items3 final result is %s" result
*)
// Data Access
let da_sampleFilePath = CreateSampleTextFilesPath
@ -130,15 +116,31 @@ let dss_text =
|> ApplyStandardSetup
|> SortIntoGroups 2
|> GenerateMap
//let dss_startwords = SeperateStartWords dss_text
//let dss_sentences = GenerateMarkovText 2 dss_text
//printfn "Text: %A" dss_sentences
let dss_sentences2 = GenerateMarkovTextTesting 2 dss_text
printfn "Text: %A" dss_sentences2
let dss_startwords = SeperateStartWords dss_text
let dss_sentences = GenerateMarkovText 2 dss_text
printfn "Text: %A" dss_sentences
// (WetPancake) Pancake
let p_result = Pancake.RequestRandomText()
let p_result2 = Pancake.RequestText 5 10
let p_result3 = Pancake.RequestTextFromFile 3 10 "D:\Developer\Wet-Pancake\WetPancake\TextFiles\desktop-clock-info.txt"
[<Literal>]
let DesktopClock = __SOURCE_DIRECTORY__ + @"\TextFiles\desktop-clock-info.txt"
[<Literal>]
let ConsoleWaterworks = __SOURCE_DIRECTORY__ + @"\TextFiles\console-waterworks-announcement.txt"
[<Literal>]
let WordGenerator = __SOURCE_DIRECTORY__ + @"\TextFiles\word-generator.txt"
[<Literal>]
let TestPost = __SOURCE_DIRECTORY__ + @"\TextFiles\test-post.txt"
let p_result = Pancake.RequestRandomTextAsync()
let p_result2 = Pancake.RequestTextAsync 5 10
let p_result3 = Pancake.RequestTextFromFileAsync 3 10 DesktopClock
let p_result4 = Pancake.RequestTextFromFileAsync 3 10 ConsoleWaterworks
let p_result5 = Pancake.RequestTextFromFileAsync 3 10 WordGenerator
let p_result6 = Pancake.RequestTextFromFileAsync 3 10 TestPost
p_result |> Async.RunSynchronously
p_result2 |> Async.RunSynchronously
p_result3 |> Async.RunSynchronously
p_result4 |> Async.RunSynchronously
p_result5 |> Async.RunSynchronously
p_result6 |> Async.RunSynchronously

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)

23
WetPancakeCLI/ConsoleCommands.cs

@ -4,11 +4,20 @@ using System;
using static WetPancake.Pancake;
using static System.Environment;
using System.Diagnostics;
using System.Threading.Tasks;
using Microsoft.FSharp.Control;
using Microsoft.FSharp.Core;
using System.Threading;
namespace WetPancakeCLI
{
public static class ConsoleCommands
{
// Pass these in when running an FSharpAsync task.
// Examples are within the command-methods.
static FSharpOption<TaskCreationOptions> _taskCreationOptions = FSharpOption<TaskCreationOptions>.None;
static FSharpOption<CancellationToken> _cancellationToken = FSharpOption<CancellationToken>.None;
[ListCommand]
[Description("Prints a test message to the console.")]
[Parameters("None")]
@ -34,12 +43,12 @@ namespace WetPancakeCLI
public static string GenerateRandomText()
{
string result = String.Empty;
try { return RequestRandomText(); }
try { return FSharpAsync.StartAsTask(RequestRandomTextAsync(), _taskCreationOptions, _cancellationToken).Result; }
catch (Exception e)
{
Debug.WriteLine(e.Message);
System.Console.WriteLine("[ERROR] Unable to complete request. Re-executing command...");
return RequestRandomText();
return FSharpAsync.StartAsTask(RequestRandomTextAsync(), _taskCreationOptions, _cancellationToken).Result;
}
}
@ -50,29 +59,31 @@ namespace WetPancakeCLI
public static string GenerateText(int gibberishLevel, int sentences)
{
if (gibberishLevel < 2) return "Please enter a gibberish level greater than 1.";
try { return RequestText(gibberishLevel, sentences); }
try { return FSharpAsync.StartAsTask(RequestTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken).Result; }
catch (Exception e)
{
Debug.WriteLine(e.Message);
System.Console.WriteLine("[ERROR] Unable to complete request. Re-executing command...");
return RequestText(gibberishLevel, sentences);
return FSharpAsync.StartAsTask(RequestTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken).Result;
}
}
// YOU ARE WORKING IN HERE... (0.5-P1)
[ListCommand]
[Description("Loads the specified .txt file and generates text based on it using the gibberish level and number of sentences specified by the user. Gibberish level must be greater the 1.")]
[Parameters("gibberish level: int, sentences: int, file path: string")]
[Usage("> RequestTextFromFile 3 6 C:/yourfile.txt")]
public static string GenerateTextFromFile(int gibberishLevel, int sentences, string filePath)
{
// Could do with checking if the file type is .txt...
if (gibberishLevel < 2) return "Please enter a gibberish level greater than 1.";
try
{ return RequestTextFromFile(gibberishLevel, sentences, filePath); }
{ return FSharpAsync.StartAsTask(RequestTextFromFileAsync(gibberishLevel, sentences, filePath), _taskCreationOptions, _cancellationToken).Result; }
catch (Exception e)
{
Debug.WriteLine(e.Message);
System.Console.WriteLine("[ERROR] Unable to complete request. Re-executing command...");
return RequestTextFromFile(gibberishLevel, sentences, filePath);
return FSharpAsync.StartAsTask(RequestTextFromFileAsync(gibberishLevel, sentences, filePath), _taskCreationOptions, _cancellationToken).Result;
}
}
}

1
WetPancakeCLI/WetPancakeCLI.csproj

@ -38,6 +38,7 @@
<Reference Include="Console.Waterworks, Version=0.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Console.Waterworks.0.1.0.0-alpha1\lib\Console.Waterworks.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">

Loading…
Cancel
Save