public void Drain_Adds_Modifier() { var cardId = Guid.NewGuid(); var stubCard = new Card() { Id = cardId }; var stubSquad = new Squad() { Lineup = new Dictionary <string, IEnumerable <Card> >() { { "ST", new[] { stubCard } } } }; var stubMatch = new ApplicationCore.Models.Match.Match() { HomeTeam = new TeamDetails() { Squad = stubSquad }, AwayTeam = new TeamDetails() { Squad = new Squad() } }; var minute = 50; var randomnessProvider = new ActionTests.TestRandomnessProvider(100); var service = new FitnessDrainService(randomnessProvider); //Act service.Drain(stubMatch, minute); //Assert Assert.NotNull(stubMatch.Minutes[minute].Modifiers.First()); Assert.Equal(ModifierType.Fitness, stubMatch.Minutes[minute].Modifiers.First().Type); Assert.Equal(cardId, stubMatch.Minutes[minute].Modifiers.First().CardId); Assert.Equal(1, stubMatch.Minutes[minute].Modifiers.First().DrainValue); }
protected MatchTestBase() { //TODO Mock these var randomnessProvider = new ThreadSafeRandomnessProvider(); var calculatedCardStatService = new CalculatedCardStatService(); var ratingService = new RatingService(calculatedCardStatService); var fitnessDrainService = new FitnessDrainService(randomnessProvider); var possessionService = new PossessionService(ratingService); var actions = new IAction[] { new Foul(randomnessProvider), new Shot(randomnessProvider, ratingService) }; var actionService = new ActionService(actions, randomnessProvider); StubMatchEngine = new MatchEngine(actionService, possessionService, fitnessDrainService); StubHomePlayer = new Card { Id = Guid.NewGuid(), Name = "GK", Rating = 80 }; StubHomeSub = new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 40 }; StubAwayPlayer = new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 40 }; StubAwaySub = new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 40 }; var stubHomeTeamLineup = new Dictionary <string, IEnumerable <Card> > { { "GK", new List <Card> { StubHomePlayer } }, { "DEF", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "LB", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "CB", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "CB", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "RB", Rating = 80 } } }, { "MID", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "LM", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "CM", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "CM", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "RM", Rating = 80 } } }, { "ATT", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 80 }, new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 80 } } } }; var stubAwayTeamLineup = new Dictionary <string, IEnumerable <Card> > { { "GK", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "GK", Rating = 40 } } }, { "DEF", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "LB", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "CB", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "CB", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "RB", Rating = 40 } } }, { "MID", new List <Card> { new Card { Id = Guid.NewGuid(), Name = "LM", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "CM", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "CM", Rating = 40 }, new Card { Id = Guid.NewGuid(), Name = "RM", Rating = 40 } } }, { "ATT", new List <Card> { StubAwayPlayer, new Card { Id = Guid.NewGuid(), Name = "ST", Rating = 40 } } } }; StubHomeSquad = new Squad { Id = Guid.NewGuid(), Lineup = stubHomeTeamLineup, Subs = new[] { StubHomeSub }, Name = "Good FC" }; StubAwaySquad = new Squad { Id = Guid.NewGuid(), Lineup = stubAwayTeamLineup, Subs = new[] { StubAwaySub }, Name = "Shitty FC" }; StubHomeUserId = Guid.NewGuid(); var stubAwayUserId = Guid.NewGuid(); StubHomeTeamDetails = new TeamDetails { UserId = StubHomeUserId, Squad = StubHomeSquad }; StubMatch = new ApplicationCore.Models.Match.Match { Id = Guid.NewGuid(), KickOff = DateTime.Now, HomeTeam = StubHomeTeamDetails, AwayTeam = new TeamDetails { UserId = stubAwayUserId, Squad = StubAwaySquad } }; }