public void ChoosesCorrectTarget() { ClosestOpponentTargeter targeter = new ClosestOpponentTargeter(new Distance(1.0)); Hero attacker = new Hero(new TeamId(0), _initialHp); Hero teammate = new Hero(new TeamId(0), _initialHp); Hero deadOpponent = new Hero(new TeamId(1), new HitPoints(0)); Hero farOpponent = new Hero(new TeamId(2), _initialHp); Hero closeOpponent = new Hero(new TeamId(3), _initialHp); HeroService heroService = new HeroService(new[] { attacker, teammate, deadOpponent, farOpponent, closeOpponent }); SpaceService spaceService = new SpaceService(); spaceService.SetHeroPosition(attacker, new Position(0.0, 0.0)); spaceService.SetHeroPosition(teammate, new Position(0.1, 0.0)); spaceService.SetHeroPosition(deadOpponent, new Position(0.0, 0.2)); spaceService.SetHeroPosition(farOpponent, new Position(0.0, 0.9)); spaceService.SetHeroPosition(closeOpponent, new Position(0.3, 0.4)); GameContext context = new GameContext(heroService, new InputService(), new TimeService(), spaceService, new RandomService(new Random())); Hero[] targets = targeter.EnumerateTargets(attacker, context).ToArray(); targets.Should().HaveCount(1); targets.Should().HaveElementAt(0, closeOpponent); }
public void CanNotTargetOpponentWithNoHpLeft() { ClosestOpponentTargeter targeter = new ClosestOpponentTargeter(new Distance(1.0)); Hero attacker = new Hero(new TeamId(0), _initialHp); Hero deadOpponent = new Hero(new TeamId(1), new HitPoints(0)); HeroService heroService = new HeroService(new[] { attacker, deadOpponent }); SpaceService spaceService = new SpaceService(); spaceService.SetHeroPosition(attacker, new Position(0.0, 0.0)); spaceService.SetHeroPosition(deadOpponent, new Position(0.0, 0.5)); GameContext context = new GameContext(heroService, new InputService(), new TimeService(), spaceService, new RandomService(new Random())); Hero[] targets = targeter.EnumerateTargets(attacker, context).ToArray(); targets.Should().BeEmpty(); }