public void SimulationGetsExpectedResult(int doorNr, bool changeDoor, bool expected) { var simulator = new Simulator(); var orderedDoors = new List <Door> { new(DoorContent.Car), new(DoorContent.Goat), new(DoorContent.Goat) }; simulator.AddSimulation(new Simulation(doorNr, changeDoor) { Doors = orderedDoors }); var(_, result) = simulator.Run().Single(); result.Should().Be(expected, $"Door {doorNr} + Choice {changeDoor} should be {expected}"); }
public void SimulatorCanRunMultipleSimulations() { var timer = Stopwatch.StartNew(); var simulator = new Simulator(); var orderedDoors = new List <Door> { new(DoorContent.Car), new(DoorContent.Goat), new(DoorContent.Goat) }; const int simCount = 1000000; var door = 1; var choice = true; for (var i = 1; i <= simCount; i++) { simulator.AddSimulation(new Simulation(door, choice) { Doors = orderedDoors }); if (door == 3) { door = 1; } else { door++; } choice = !choice; } foreach (var(sim, result) in simulator.Run()) { var expected = ResultByChoices(sim); result.Should().Be(expected, $"Door {sim.ChosenDoorNr} + Choice {sim.ChosenDoorNr} should be {expected}"); } timer.Stop(); _helper.WriteLine($"Ran {simCount} simulations in {timer.ElapsedMilliseconds}ms");