Skip to content

Commit 1b3f6fc

Browse files
hyperia-forex: fix fscheck
1 parent 3802a13 commit 1b3f6fc

File tree

2 files changed

+150
-92
lines changed

2 files changed

+150
-92
lines changed

exercises/concept/hyperia-forex/HyperiaForex.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
</ItemGroup>
1414

1515
<ItemGroup>
16-
<PackageReference Include="FsCheck" Version="2.16.3" />
17-
<PackageReference Include="FsCheck.Xunit" Version="2.16.3" />
16+
<PackageReference Include="FsCheck" Version="3.1.0" />
1817
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
1918
<PackageReference Include="xunit.v3" Version="1.1.0" />
2019
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.1" />
Lines changed: 149 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,180 +1,239 @@
1-
using FsCheck.Xunit;
21
using FsCheck;
2+
33
using Exercism.Tests;
44

5+
using FsCheck.Fluent;
6+
57
public class HyperiaForexTests
68
{
7-
[Property]
9+
[Fact]
810
[Task(1)]
9-
public void Equality_with_same_currency(decimal value)
11+
public void Equality_with_same_currency()
1012
{
11-
var amount1 = new CurrencyAmount(value, "HD");
12-
var amount2 = new CurrencyAmount(value, "HD");
13+
Prop.ForAll<decimal>(value =>
14+
{
15+
var amount1 = new CurrencyAmount(value, "HD");
16+
var amount2 = new CurrencyAmount(value, "HD");
1317

14-
Assert.True(amount1 == amount2);
18+
Assert.True(amount1 == amount2);
19+
}).QuickCheckThrowOnFailure();
1520
}
1621

17-
[Property]
22+
[Fact]
1823
[Task(1)]
19-
public void Equality_with_different_currency(decimal value)
24+
public void Equality_with_different_currency()
2025
{
21-
var amount1 = new CurrencyAmount(value, "HD");
22-
var amount2 = new CurrencyAmount(value, "USD");
26+
Prop.ForAll<decimal>(value =>
27+
{
28+
var amount1 = new CurrencyAmount(value, "HD");
29+
var amount2 = new CurrencyAmount(value, "USD");
2330

24-
Assert.Throws<ArgumentException>(() => amount1 == amount2);
31+
Assert.Throws<ArgumentException>(() => amount1 == amount2);
32+
}).QuickCheckThrowOnFailure();
2533
}
2634

27-
[Property]
35+
[Fact]
2836
[Task(1)]
29-
public Property Inequality_with_same_currency(decimal value1, decimal value2)
37+
public void Inequality_with_same_currency()
3038
{
31-
var amount1 = new CurrencyAmount(value1, "HD");
32-
var amount2 = new CurrencyAmount(value2, "HD");
39+
Prop.ForAll<(decimal, decimal)>(values =>
40+
{
41+
var amount1 = new CurrencyAmount(values.Item1, "HD");
42+
var amount2 = new CurrencyAmount(values.Item2, "HD");
3343

34-
return Prop.When(value1 != value2, () => Assert.True(amount1 != amount2));
44+
return Prop.When(values.Item1 != values.Item2, () => Assert.True(amount1 != amount2));
45+
}).QuickCheckThrowOnFailure();
3546
}
3647

37-
[Property]
48+
[Fact]
3849
[Task(1)]
39-
public void Inequality_with_different_currency(decimal value1, decimal value2)
50+
public void Inequality_with_different_currency()
4051
{
41-
var amount1 = new CurrencyAmount(value1, "HD");
42-
var amount2 = new CurrencyAmount(value2, "USD");
52+
Prop.ForAll<(decimal, decimal)>(values =>
53+
{
54+
var amount1 = new CurrencyAmount(values.Item1, "HD");
55+
var amount2 = new CurrencyAmount(values.Item2, "USD");
4356

44-
Assert.Throws<ArgumentException>(() => amount1 != amount2);
57+
Assert.Throws<ArgumentException>(() => amount1 != amount2);
58+
}).QuickCheckThrowOnFailure();
4559
}
4660

47-
[Property]
61+
[Fact]
4862
[Task(2)]
49-
public Property LessThan_with_same_currency(decimal value1, decimal value2)
63+
public void LessThan_with_same_currency()
5064
{
51-
var amount1 = new CurrencyAmount(value1, "HD");
52-
var amount2 = new CurrencyAmount(value2, "HD");
65+
Prop.ForAll<(decimal, decimal)>(values =>
66+
{
67+
var amount1 = new CurrencyAmount(values.Item1, "HD");
68+
var amount2 = new CurrencyAmount(values.Item2, "HD");
5369

54-
return Prop.When(value1 < value2, () => Assert.True(amount1 < amount2));
70+
return Prop.When(values.Item1 < values.Item2, () => Assert.True(amount1 < amount2));
71+
}).QuickCheckThrowOnFailure();
5572
}
5673

57-
[Property]
74+
[Fact]
5875
[Task(2)]
59-
public void LessThan_with_different_currency(decimal value1, decimal value2)
76+
public void LessThan_with_different_currency()
6077
{
61-
var amount1 = new CurrencyAmount(value1, "HD");
62-
var amount2 = new CurrencyAmount(value2, "USD");
78+
Prop.ForAll<(decimal, decimal)>(values =>
79+
{
80+
var amount1 = new CurrencyAmount(values.Item1, "HD");
81+
var amount2 = new CurrencyAmount(values.Item2, "USD");
6382

64-
Assert.Throws<ArgumentException>(() => amount1 < amount2);
83+
Assert.Throws<ArgumentException>(() => amount1 < amount2);
84+
}).QuickCheckThrowOnFailure();
6585
}
6686

67-
[Property]
87+
[Fact]
6888
[Task(2)]
69-
public Property GreaterThan_with_same_currency(decimal value1, decimal value2)
89+
public void GreaterThan_with_same_currency()
7090
{
71-
var amount1 = new CurrencyAmount(value1, "HD");
72-
var amount2 = new CurrencyAmount(value2, "HD");
91+
Prop.ForAll<(decimal, decimal)>(values =>
92+
{
93+
var amount1 = new CurrencyAmount(values.Item1, "HD");
94+
var amount2 = new CurrencyAmount(values.Item2, "HD");
7395

74-
return Prop.When(value1 > value2, () => Assert.True(amount1 > amount2));
96+
return Prop.When(values.Item1 > values.Item2, () => Assert.True(amount1 > amount2));
97+
}).QuickCheckThrowOnFailure();
7598
}
7699

77-
[Property]
100+
[Fact]
78101
[Task(2)]
79-
public void GreaterThan_with_different_currency(decimal value1, decimal value2)
102+
public void GreaterThan_with_different_currency()
80103
{
81-
var amount1 = new CurrencyAmount(value1, "HD");
82-
var amount2 = new CurrencyAmount(value2, "USD");
104+
Prop.ForAll<(decimal, decimal)>(values =>
105+
{
106+
var amount1 = new CurrencyAmount(values.Item1, "HD");
107+
var amount2 = new CurrencyAmount(values.Item2, "USD");
83108

84-
Assert.Throws<ArgumentException>(() => amount1 > amount2);
109+
Assert.Throws<ArgumentException>(() => amount1 > amount2);
110+
}).QuickCheckThrowOnFailure();
85111
}
86112

87-
[Property]
113+
[Fact]
88114
[Task(3)]
89-
public void Addition_with_same_currency(decimal value1, decimal value2)
115+
public void Addition_with_same_currency()
90116
{
91-
var amount1 = new CurrencyAmount(value1, "HD");
92-
var amount2 = new CurrencyAmount(value2, "HD");
93-
var expected = new CurrencyAmount(value1 + value2, "HD");
117+
Prop.ForAll<(decimal, decimal)>(values =>
118+
{
119+
var amount1 = new CurrencyAmount(values.Item1, "HD");
120+
var amount2 = new CurrencyAmount(values.Item2, "HD");
121+
var expected = new CurrencyAmount(values.Item1 + values.Item2, "HD");
94122

95-
Assert.Equal(expected, amount1 + amount2);
123+
Assert.Equal(expected, amount1 + amount2);
124+
}).QuickCheckThrowOnFailure();
96125
}
97126

98-
[Property]
127+
[Fact]
99128
[Task(3)]
100-
public void Addition_is_commutative(decimal value1, decimal value2)
129+
public void Addition_is_commutative()
101130
{
102-
var amount1 = new CurrencyAmount(value1, "HD");
103-
var amount2 = new CurrencyAmount(value2, "HD");
131+
Prop.ForAll<(decimal, decimal)>(values =>
132+
{
133+
var amount1 = new CurrencyAmount(values.Item1, "HD");
134+
var amount2 = new CurrencyAmount(values.Item2, "HD");
104135

105-
Assert.Equal(amount1 + amount2, amount2 + amount1);
136+
Assert.Equal(amount1 + amount2, amount2 + amount1);
137+
}).QuickCheckThrowOnFailure();
106138
}
107139

108-
[Property]
140+
[Fact]
109141
[Task(3)]
110-
public void Addition_with_different_currency(decimal value1, decimal value2)
142+
public void Addition_with_different_currency()
111143
{
112-
var amount1 = new CurrencyAmount(value1, "HD");
113-
var amount2 = new CurrencyAmount(value2, "USD");
144+
Prop.ForAll<(decimal, decimal)>(values =>
145+
{
146+
var amount1 = new CurrencyAmount(values.Item1, "HD");
147+
var amount2 = new CurrencyAmount(values.Item2, "USD");
114148

115-
Assert.Throws<ArgumentException>(() => amount1 + amount2);
149+
Assert.Throws<ArgumentException>(() => amount1 + amount2);
150+
}).QuickCheckThrowOnFailure();
116151
}
117152

118-
[Property]
153+
[Fact]
119154
[Task(3)]
120-
public void Subtraction_with_same_currency(decimal value1, decimal value2)
155+
public void Subtraction_with_same_currency()
121156
{
122-
var amount1 = new CurrencyAmount(value1, "HD");
123-
var amount2 = new CurrencyAmount(value2, "HD");
124-
var expected = new CurrencyAmount(value1 - value2, "HD");
157+
Prop.ForAll<(decimal, decimal)>(values =>
158+
{
159+
var amount1 = new CurrencyAmount(values.Item1, "HD");
160+
var amount2 = new CurrencyAmount(values.Item2, "HD");
161+
var expected = new CurrencyAmount(values.Item1 - values.Item2, "HD");
125162

126-
Assert.Equal(expected, amount1 - amount2);
163+
Assert.Equal(expected, amount1 - amount2);
164+
}).QuickCheckThrowOnFailure();
127165
}
128166

129-
[Property]
167+
[Fact]
130168
[Task(3)]
131-
public void Subtraction_with_different_currency(decimal value1, decimal value2)
169+
public void Subtraction_with_different_currency()
132170
{
133-
var amount1 = new CurrencyAmount(value1, "HD");
134-
var amount2 = new CurrencyAmount(value2, "USD");
171+
Prop.ForAll<(decimal, decimal)>(values =>
172+
{
173+
var amount1 = new CurrencyAmount(values.Item1, "HD");
174+
var amount2 = new CurrencyAmount(values.Item2, "USD");
135175

136-
Assert.Throws<ArgumentException>(() => amount1 - amount2);
176+
Assert.Throws<ArgumentException>(() => amount1 - amount2);
177+
}).QuickCheckThrowOnFailure();
137178
}
138179

139-
[Property]
180+
[Fact]
140181
[Task(4)]
141-
public void Multiplication(decimal value, decimal factor)
182+
public void Multiplication()
142183
{
143-
Assert.Equal(new CurrencyAmount(factor * value, "HD"),
144-
factor * new CurrencyAmount(value, "HD"));
184+
Prop.ForAll<(decimal, decimal)>(values =>
185+
{
186+
var (value, factor) = values;
187+
Assert.Equal(new CurrencyAmount(factor * value, "HD"),
188+
factor * new CurrencyAmount(value, "HD"));
189+
}).QuickCheckThrowOnFailure();
145190
}
146191

147-
[Property]
192+
[Fact]
148193
[Task(4)]
149-
public void Multiplication_is_commutative(decimal value, decimal factor)
194+
public void Multiplication_is_commutative()
150195
{
151-
var amount = new CurrencyAmount(value, "HD");
196+
Prop.ForAll<(decimal, decimal)>(values =>
197+
{
198+
var (value, factor) = values;
199+
var amount = new CurrencyAmount(value, "HD");
152200

153-
Assert.Equal(amount * factor, factor * amount);
201+
Assert.Equal(amount * factor, factor * amount);
202+
}).QuickCheckThrowOnFailure();
154203
}
155204

156-
[Property]
205+
[Fact]
157206
[Task(4)]
158-
public Property Division(decimal value, decimal divisor)
207+
public void Division()
159208
{
160-
return Prop.When(
161-
divisor != 0,
162-
() => Assert.True(new CurrencyAmount(value, "HD") / divisor ==
163-
new CurrencyAmount(value / divisor, "HD")));
209+
Prop.ForAll<(decimal, decimal)>(values =>
210+
{
211+
var (value, divisor) = values;
212+
return Prop.When(
213+
divisor != 0,
214+
() => Assert.True(new CurrencyAmount(value, "HD") / divisor ==
215+
new CurrencyAmount(value / divisor, "HD")));
216+
}).QuickCheckThrowOnFailure();
164217
}
165218

166-
[Property]
219+
[Fact]
167220
[Task(5)]
168-
public void Cast_to_double(decimal value)
221+
public void Cast_to_double()
169222
{
170-
Assert.Equal(Convert.ToDouble(value), (double)new CurrencyAmount(value, "HD"));
223+
Prop.ForAll<decimal>(value =>
224+
{
225+
Assert.Equal(Convert.ToDouble(value), (double)new CurrencyAmount(value, "HD"));
226+
}).QuickCheckThrowOnFailure();
171227
}
172228

173-
[Property]
229+
[Fact]
174230
[Task(6)]
175-
public void Cast_to_decimal(decimal value)
231+
public void Cast_to_decimal()
176232
{
177-
decimal actual = new CurrencyAmount(value, "HD");
178-
Assert.Equal(value, actual);
233+
Prop.ForAll<decimal>(value =>
234+
{
235+
decimal actual = new CurrencyAmount(value, "HD");
236+
Assert.Equal(value, actual);
237+
}).QuickCheckThrowOnFailure();
179238
}
180-
}
239+
}

0 commit comments

Comments
 (0)