public void Strongest_team_has_the_highest_possible_team_strength_for_given_skill_and_size() { const string skill = "valid skill"; const string programmerA = "a"; const string programmerB = "b"; const string programmerC = "c"; var networkRepository = Substitute.For <INetworkRepository>(); networkRepository.GetAll().Returns(new[] { new Programmer(programmerA, null, null), new Programmer(programmerB, null, null), new Programmer(programmerC, null, null) }); var team1 = new[] { programmerA, programmerB }; var team2 = new[] { programmerC, programmerB }; var team3 = new[] { programmerA, programmerC }; var teamStrengthService = Substitute.For <ITeamStrengthService>(); teamStrengthService.GetTeamStrength(skill, team1).Returns(0d); teamStrengthService.GetTeamStrength(skill, team2).Returns(1d); teamStrengthService.GetTeamStrength(skill, team3).Returns(2d); var permutationService = Substitute.For <IPermutationService>(); permutationService.GetPermutations(Arg.Any <IEnumerable <string> >(), 2).Returns(new[] { team1, team2, team3 }); var strongestTeam = new StrongestTeamService(networkRepository, teamStrengthService, permutationService).FindStrongestTeam(skill, 2); Assert.That(strongestTeam, Is.EqualTo(team3)); }
public void Leader_is_strongest_in_team() { const string skill = "valid skill"; const string programmerA = "a"; const string programmerB = "b"; const string programmerC = "c"; var networkRepository = Substitute.For <INetworkRepository>(); networkRepository.GetAll().Returns(new[] { new Programmer(programmerA, null, null), new Programmer(programmerB, null, null), new Programmer(programmerC, null, null) }); var team1 = new[] { programmerA, programmerB, programmerC }; var teamStrengthService = Substitute.For <ITeamStrengthService>(); teamStrengthService.GetIndividualStrength(skill, programmerA).Returns(0); teamStrengthService.GetIndividualStrength(skill, programmerB).Returns(1); teamStrengthService.GetIndividualStrength(skill, programmerC).Returns(2); var permutationService = Substitute.For <IPermutationService>(); permutationService.GetPermutations(Arg.Any <IEnumerable <string> >(), 2).Returns(new[] { team1 }); var strongestTeam = new StrongestTeamService(networkRepository, teamStrengthService, permutationService).FindStrongestTeam(skill, 2); Assert.That(strongestTeam.First(), Is.EqualTo(programmerC)); }
protected override IProNet LoadProNet(string filename) { // load your implementation here var fileService = new FileService(); var networkValidator = new NetworkValidator(); var networkService = new NetworkRepository(fileService, filename, networkValidator); var rankService = new RankService(networkService); var skillsService = new SkillsService(networkService); var separationService = new SeparationService(networkService); var recommendationService = new RecommendationService(networkService); var teamStrengthService = new TeamStrengthService(separationService, skillsService, rankService); var permutationService = new PermutationService(); var strongestTeamService = new StrongestTeamService(networkService, teamStrengthService, permutationService); return(new ProNet(rankService, skillsService, separationService, recommendationService, teamStrengthService, strongestTeamService)); }
public void Strongest_team_is_of_specified_size(int expected) { var networkRepository = Substitute.For <INetworkRepository>(); var skills = new [] { "skill" }; networkRepository.GetAll().Returns(new[] { new Programmer("a", null, skills), new Programmer("b", null, skills), new Programmer("c", null, skills), new Programmer("d", null, skills), new Programmer("e", null, skills) }); var teamService = Substitute.For <ITeamStrengthService>(); var team = new StrongestTeamService(networkRepository, teamService, new PermutationService()).FindStrongestTeam("skill", expected); Assert.That(team.Count(), Is.EqualTo(expected)); }