Skip to content

Commit 26c3cfe

Browse files
authored
Merge pull request #13 from fslaborg/test-coverage/generic-math-and-vector-module-20251010-6fa157a8383aaee9
Daily Test Coverage Improver - Add tests for GenericMath and VectorModule
2 parents 740933b + 8a19aa0 commit 26c3cfe

File tree

3 files changed

+420
-0
lines changed

3 files changed

+420
-0
lines changed

tests/FsMath.Tests/FsMath.Tests.fsproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<ItemGroup>
1010
<Compile Include="ExpectoStyle.fs" />
1111
<Compile Include="AssertHelpers.fs" />
12+
<Compile Include="GenericMathTests.fs" />
13+
<Compile Include="VectorModuleTests.fs" />
1214
<Compile Include="VectorFloatTests.fs" />
1315
<Compile Include="VectorIntTests.fs" />
1416
<Compile Include="VectorManipulationTests.fs" />
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
namespace FsMath.Tests.GenericMath
2+
3+
open System
4+
open Xunit
5+
open FsMath
6+
open FsMath.GenericMath
7+
open FsMath.Tests.AssertHelpers
8+
9+
module GenericMathTests =
10+
11+
[<Fact>]
12+
let ``zero: returns correct zero for float`` () =
13+
let result = zero<float>
14+
Assert.Equal(0.0, result)
15+
16+
[<Fact>]
17+
let ``zero: returns correct zero for int`` () =
18+
let result = zero<int>
19+
Assert.Equal(0, result)
20+
21+
[<Fact>]
22+
let ``one: returns correct one for float`` () =
23+
let result = one<float>
24+
Assert.Equal(1.0, result)
25+
26+
[<Fact>]
27+
let ``one: returns correct one for int`` () =
28+
let result = one<int>
29+
Assert.Equal(1, result)
30+
31+
[<Fact>]
32+
let ``T: converts float to float`` () =
33+
let result = T<float> 3.14
34+
floatEqual 3.14 result 1e-10
35+
36+
[<Fact>]
37+
let ``T: converts float to int`` () =
38+
let result = T<int> 42.0
39+
Assert.Equal(42, result)
40+
41+
[<Fact>]
42+
let ``sqrt: computes square root of float`` () =
43+
let result = sqrt<float> 16.0
44+
floatEqual 4.0 result 1e-10
45+
46+
[<Fact>]
47+
let ``sqrt: computes square root of 2.0`` () =
48+
let result = sqrt<float> 2.0
49+
floatEqual 1.4142135623730951 result 1e-10
50+
51+
[<Fact>]
52+
let ``exp: computes e^x for float`` () =
53+
let result = exp<float> 1.0
54+
floatEqual Math.E result 1e-10
55+
56+
[<Fact>]
57+
let ``exp: computes e^0`` () =
58+
let result = exp<float> 0.0
59+
floatEqual 1.0 result 1e-10
60+
61+
[<Fact>]
62+
let ``exp: computes e^2`` () =
63+
let result = exp<float> 2.0
64+
floatEqual 7.38905609893065 result 1e-10
65+
66+
[<Fact>]
67+
let ``pow: computes 2^3`` () =
68+
let result = pow<float> 2.0 3.0
69+
floatEqual 8.0 result 1e-10
70+
71+
[<Fact>]
72+
let ``pow: computes 10^2`` () =
73+
let result = pow<float> 10.0 2.0
74+
floatEqual 100.0 result 1e-10
75+
76+
[<Fact>]
77+
let ``pow: computes 5^0`` () =
78+
let result = pow<float> 5.0 0.0
79+
floatEqual 1.0 result 1e-10
80+
81+
[<Fact>]
82+
let ``log: computes natural log of e`` () =
83+
let result = log<float> Math.E
84+
floatEqual 1.0 result 1e-10
85+
86+
[<Fact>]
87+
let ``log: computes natural log of 1`` () =
88+
let result = log<float> 1.0
89+
floatEqual 0.0 result 1e-10
90+
91+
[<Fact>]
92+
let ``log: computes natural log of 10`` () =
93+
let result = log<float> 10.0
94+
floatEqual 2.302585092994046 result 1e-10
95+
96+
[<Fact>]
97+
let ``abs: returns absolute value of positive number`` () =
98+
let result = abs<float> 5.5
99+
floatEqual 5.5 result 1e-10
100+
101+
[<Fact>]
102+
let ``abs: returns absolute value of negative number`` () =
103+
let result = abs<float> -5.5
104+
floatEqual 5.5 result 1e-10
105+
106+
[<Fact>]
107+
let ``abs: returns zero for zero`` () =
108+
let result = abs<float> 0.0
109+
floatEqual 0.0 result 1e-10
110+
111+
[<Fact>]
112+
let ``abs: works with integers`` () =
113+
let result = abs<int> -42
114+
Assert.Equal(42, result)
115+
116+
[<Fact>]
117+
let ``sin: computes sine of 0`` () =
118+
let result = sin<float> 0.0
119+
floatEqual 0.0 result 1e-10
120+
121+
[<Fact>]
122+
let ``sin: computes sine of pi/2`` () =
123+
let result = sin<float> (Math.PI / 2.0)
124+
floatEqual 1.0 result 1e-10
125+
126+
[<Fact>]
127+
let ``sin: computes sine of pi`` () =
128+
let result = sin<float> Math.PI
129+
floatEqual 0.0 result 1e-10
130+
131+
[<Fact>]
132+
let ``cos: computes cosine of 0`` () =
133+
let result = cos<float> 0.0
134+
floatEqual 1.0 result 1e-10
135+
136+
[<Fact>]
137+
let ``cos: computes cosine of pi`` () =
138+
let result = cos<float> Math.PI
139+
floatEqual -1.0 result 1e-10
140+
141+
[<Fact>]
142+
let ``cos: computes cosine of pi/2`` () =
143+
let result = cos<float> (Math.PI / 2.0)
144+
floatEqual 0.0 result 1e-10
145+
146+
[<Fact>]
147+
let ``pi: returns correct value for float`` () =
148+
let result = pi<float> ()
149+
floatEqual Math.PI result 1e-10
150+
151+
[<Fact>]
152+
let ``e: returns Euler's number for float`` () =
153+
let result = e<float> ()
154+
floatEqual Math.E result 1e-10
155+
156+
[<Fact>]
157+
let ``tau: returns 2*pi for float`` () =
158+
let result = tau<float> ()
159+
floatEqual (2.0 * Math.PI) result 1e-10
160+
161+
[<Fact>]
162+
let ``floor: rounds down positive number`` () =
163+
let result = floor<float> 3.7
164+
floatEqual 3.0 result 1e-10
165+
166+
[<Fact>]
167+
let ``floor: rounds down negative number`` () =
168+
let result = floor<float> -2.3
169+
floatEqual -3.0 result 1e-10
170+
171+
[<Fact>]
172+
let ``floor: keeps integer unchanged`` () =
173+
let result = floor<float> 5.0
174+
floatEqual 5.0 result 1e-10
175+
176+
[<Fact>]
177+
let ``epsilon: returns a very small positive value`` () =
178+
let result = epsilon<float> ()
179+
Assert.True(result > 0.0)
180+
Assert.True(result < 1e-300)

0 commit comments

Comments
 (0)