Skip to content

Commit 614422e

Browse files
Han BolKaranChadha10
authored andcommitted
Improved test for roll_the_die
- Tests now check whether multiple rolls supply different results - RollDie is checked for returning all values in the expected range - Increased for loop from 100 times to 1000 times to prevent false negative. Encountered that 100 rolls was not sufficient to have all numbers in range(1, 18) to be generated. Rationale: My first implementation (thanks XKCD) made the test suite pass. ``` public int RollDie() { return 4; // chosen by fair dice roll. // guaranteed to be random. } ```
1 parent 9082055 commit 614422e

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed
Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,37 @@
11
using Exercism.Tests;
2+
using System.Collections.Generic;
23

34
public class RollTheDieTests
45
{
56
[Fact]
67
[Task(1)]
78
public void RollDie()
89
{
10+
var rollCount = 1000;
11+
var rolls = new HashSet<int>(rollCount);
912
var player = new Player();
10-
for (var i = 0; i < 100; i++)
13+
for (var i = 0; i < rollCount; i++)
1114
{
15+
var roll = player.RollDie();
16+
rolls.Add(roll);
1217
Assert.InRange(player.RollDie(), 1, 18);
1318
}
19+
Assert.Equal(18, rolls.Count);
1420
}
1521

1622
[Fact]
1723
[Task(2)]
1824
public void GenerateSpellStrength()
1925
{
26+
var rollCount = 100;
27+
var rolls = new HashSet<double>(rollCount);
2028
var player = new Player();
21-
var strength = player.GenerateSpellStrength();
22-
Assert.InRange(strength, 0.0, 100.0);
29+
for (var i = 0; i < rollCount; i++)
30+
{
31+
var strength = player.GenerateSpellStrength();
32+
rolls.Add(strength);
33+
Assert.InRange(strength, 0.0, 100.0);
34+
}
35+
Assert.Equal(rollCount, rolls.Count);
2336
}
2437
}

0 commit comments

Comments
 (0)