@@ -4,15 +4,56 @@ open Microsoft.VisualStudio.TestTools.UnitTesting
4
4
open Algorithms.Math
5
5
6
6
[<TestClass>]
7
- type FactorialTests () =
8
-
7
+ type FactorialTests () =
8
+
9
9
[<TestMethod>]
10
+ [<DataRow( 0 , 1 ) >]
10
11
[<DataRow( 1 , 1 ) >]
11
12
[<DataRow( 2 , 2 ) >]
12
13
[<DataRow( 3 , 6 ) >]
13
14
[<DataRow( 5 , 120 ) >]
14
15
[<DataRow( 8 , 40320 ) >]
15
16
[<DataRow( 10 , 3628800 ) >]
16
- member this.FactorialOf ( num : int , expected : int ) =
17
- let actual = Factorial.CalculateFactorial num
18
- Assert.AreEqual( expected, actual)
17
+ [<DataRow( 12 , 479001600 ) >]
18
+ member this.ValidInt ( num : int , expected : int ) =
19
+ seq {
20
+ Factorial.byFoldFunction
21
+ Factorial.byReduceFunction
22
+ Factorial.byRecursion
23
+ Factorial.byTailRecursion
24
+ Factorial.byTailRecursionGeneric
25
+ }
26
+ |> Seq.iter ( fun func ->
27
+ let actual = func num
28
+ Assert.AreEqual( expected, actual))
29
+
30
+ [<TestMethod>]
31
+ [<DataRow(- 1 ) >]
32
+ member this.InvalidInt ( num : int ) =
33
+ seq {
34
+ Factorial.byFoldFunction
35
+ Factorial.byReduceFunction
36
+ Factorial.byRecursion
37
+ Factorial.byTailRecursion
38
+ Factorial.byTailRecursionGeneric
39
+ }
40
+ |> Seq.iter ( fun func ->
41
+ let action =
42
+ new System.Action( fun () -> func num |> ignore)
43
+
44
+ Assert.ThrowsException( action) |> ignore)
45
+
46
+ [<TestMethod>]
47
+ member this.Generic () =
48
+ Assert.AreEqual( 479001600 , Factorial.byTailRecursionGeneric 12 )
49
+ Assert.AreEqual( 479001600 u, Factorial.byTailRecursionGeneric 12 u)
50
+ Assert.AreEqual( 479001600. f, Factorial.byTailRecursionGeneric 12. f)
51
+ Assert.AreEqual( 2432902008176640000 L, Factorial.byTailRecursionGeneric 20 L)
52
+ Assert.AreEqual( 2432902008176640000 UL, Factorial.byTailRecursionGeneric 20 UL)
53
+ Assert.AreEqual( 2432902008176640000. , Factorial.byTailRecursionGeneric 20. )
54
+ Assert.AreEqual( 10888869450418352160768000000 M, Factorial.byTailRecursionGeneric 27 M)
55
+
56
+ Assert.AreEqual(
57
+ 30414093201713378043612608166064768844377641568960512000000000000 I,
58
+ Factorial.byTailRecursionGeneric 50 I
59
+ )
0 commit comments