public void WhenBuiltDispatcher_ShouldHaveMeInMaze(int testNum, int blocksPerTile) { var registry = new DispatchRegistry(); var dispatcher = new Dispatcher(registry); var fakeRandomNumbers = GetGenerator(testNum); var fakeLogger = new FakeLogger(_output); var mazeDescriptor = FakeMazeDescriptorBuilder.Build(1, 1, 4, blocksPerTile); var builder = new LevelBuilder(fakeRandomNumbers, mazeDescriptor, fakeLogger, dispatcher, registry); builder.Build(testNum); var me = new Me(Coordinate.NotSet, registry, Me.FormatState(10, 10)); dispatcher.EnqueueTeleport(me); dispatcher.Dispatch(); var maze = registry.GetDispatchee("Maze1"); var actual = maze.ToString(); var expected = GetExpectation(testNum); _output.WriteLine(expected); _output.WriteLine('='.ToPaddedString(10)); _output.WriteLine(actual); Assert.Equal(expected, actual); }
public void Move_Me_CanMoveIntoEmptySpace() { var testNum = 1; var registry = new DispatchRegistry(); var dispatcher = new Dispatcher(registry); var fakeRandomNumbers = GetGenerator(testNum); var fakeLogger = new FakeLogger(_output); var mazeDescriptor = FakeMazeDescriptorBuilder.Build(1, 1, 4, 2); var builder = new LevelBuilder(fakeRandomNumbers, mazeDescriptor, fakeLogger, dispatcher, registry); builder.Build(GetLevel(testNum)); var me = ActorBuilder.Build <Me>(Coordinate.NotSet, registry, Me.FormatState(10, 10)); dispatcher.EnqueueTeleport(me); dispatcher.Dispatch(); // t+1 dispatcher.EnqueueMove(me, Compass8Points.South); dispatcher.Dispatch(); var expected = GetExpectation(testNum); var actual = registry.GetDispatchee("Maze1").ToString(); _output.WriteLine(expected); _output.WriteLine('='.ToPaddedString(10)); _output.WriteLine(actual); Assert.Equal(expected, actual); }
public void AttachingAMonstor_WillReduceItsHitPoints() { var state = MeleeWeapon.FormatState("Wooden Club", "Me1", 1, 12, -1, 1, 7.5, 0, 50); var testNum = 1; var fakeRandomNumbers = GetGenerator(testNum); var registry = new DispatchRegistry(); var dispatcher = new Dispatcher(registry); var fakeLogger = new FakeLogger(_output); var mazeDescriptor = FakeMazeDescriptorBuilder.Build(1, 1, 4, 2); var builder = new LevelBuilder(fakeRandomNumbers, mazeDescriptor, fakeLogger, dispatcher, registry); builder.Build(testNum); var me = ActorBuilder.Build <Me>(Coordinate.NotSet, registry, Me.FormatState(10, 10)); dispatcher.EnqueueTeleport(me); var monster = ActorBuilder.Build <Monster>(Coordinate.NotSet, registry, Monster.FormatState(10, 10)); dispatcher.EnqueueTeleport(monster); dispatcher.Dispatch(); var weapon = new MeleeWeapon(fakeRandomNumbers, registry, dispatcher, state); dispatcher.EnqueueUse(weapon, Compass8Points.East); dispatcher.Dispatch(); monster = (Monster)registry.GetDispatchee(monster.UniqueId); var expected = "HitPoints [7], ArmourClass [10]"; var actual = $"HitPoints [{monster.HitPoints}], ArmourClass [{monster.ArmourClass}]"; Assert.Equal(expected, actual); }