diff --git a/Workflow/Workflow.Test/Program.fs b/Workflow/Workflow.Test/Program.fs new file mode 100644 index 0000000..176a7b6 --- /dev/null +++ b/Workflow/Workflow.Test/Program.fs @@ -0,0 +1,4 @@ +module Program = + + [] + let main _ = 0 diff --git a/Workflow/Workflow.Test/Workflow.Test.fsproj b/Workflow/Workflow.Test/Workflow.Test.fsproj new file mode 100644 index 0000000..769bb1f --- /dev/null +++ b/Workflow/Workflow.Test/Workflow.Test.fsproj @@ -0,0 +1,27 @@ + + + + net6.0 + + false + false + + + + + + + + + + + + + + + + + + + + diff --git a/Workflow/Workflow.Test/WorkflowTest.fs b/Workflow/Workflow.Test/WorkflowTest.fs new file mode 100644 index 0000000..d9af79f --- /dev/null +++ b/Workflow/Workflow.Test/WorkflowTest.fs @@ -0,0 +1,50 @@ +module Workflow.Test + +open System +open NUnit.Framework +open FsUnit +open Workflows + +[] +let RoundTest () = + let rounding i = new RoundBuilder(i) + let result = + rounding 3 { + let! a = 2.0 / 12.0 + let! b = 3.5 + return a / b + } + result |> should equal 0.048 + +[] +let RoundWithTest () = + (fun () -> + RoundBuilder.rounding -3 { + let! a = 2.0 / 12.0 + let! b = 3.5 + return a / b + } |> ignore) |> should throw typeof + +[] +let CalculateTest () = + let calculate = new CalculateBuilder() + let result = + calculate { + let! a = "1" + let! b = "3" + let z = a + b + return z + } + result |> should equal (Some 4) + +[] +let CalculateTestIncorrect () = + let calculate = new CalculateBuilder() + let result = + calculate { + let! a = "1" + let! b = "." + let z = a + b + return z + } + result |> should equal None \ No newline at end of file diff --git a/Workflow/Workflow.sln b/Workflow/Workflow.sln new file mode 100644 index 0000000..367eef9 --- /dev/null +++ b/Workflow/Workflow.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Workflow", "Workflow\Workflow.fsproj", "{A6036D48-D2F8-46B8-9DEE-AB17878E8806}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Workflow.Test", "Workflow.Test\Workflow.Test.fsproj", "{92E2C706-313D-4973-B32E-5BE88E2980CB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A6036D48-D2F8-46B8-9DEE-AB17878E8806}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6036D48-D2F8-46B8-9DEE-AB17878E8806}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6036D48-D2F8-46B8-9DEE-AB17878E8806}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6036D48-D2F8-46B8-9DEE-AB17878E8806}.Release|Any CPU.Build.0 = Release|Any CPU + {92E2C706-313D-4973-B32E-5BE88E2980CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92E2C706-313D-4973-B32E-5BE88E2980CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92E2C706-313D-4973-B32E-5BE88E2980CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92E2C706-313D-4973-B32E-5BE88E2980CB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Workflow/Workflow/Program.fs b/Workflow/Workflow/Program.fs new file mode 100644 index 0000000..e533ba5 --- /dev/null +++ b/Workflow/Workflow/Program.fs @@ -0,0 +1,14 @@ +module Workflows +open System + +type RoundBuilder(i : int) = + static member rounding = RoundBuilder + member this.Bind(x: float, f) = f (Math.Round(x, i)) + member this.Return(x: float) = Math.Round(x, i) + +type CalculateBuilder() = + member this.Bind(x : string, f) = + match Int32.TryParse x with + | true, x -> f x + | false, _ -> None + member this.Return(x) = Some x \ No newline at end of file diff --git a/Workflow/Workflow/Workflow.fsproj b/Workflow/Workflow/Workflow.fsproj new file mode 100644 index 0000000..525d1e6 --- /dev/null +++ b/Workflow/Workflow/Workflow.fsproj @@ -0,0 +1,13 @@ + + + + net6.0 + Windows + Exe + + + + + + +