public void SplitOptionTest_분리조건_사람수가_팀_수보다_많은경우() { var teamMaker = new SettingOptionTeamMaker(null); var teamCount = 3; var splitNames = new List <MemberName> { _names[2], _names[3], _names[4], _names[5] }; var settingOption = new TeamSettingOption() { SplitOptions = new () { new () { Names = splitNames }, }, }; var result = teamMaker.MakeTeam_Internal(_names, teamCount, settingOption); var splitPlayers = result.Players.Where(x => splitNames.Any(name => name == x.MemberName)); var grouped = splitPlayers .GroupBy(x => x.TeamName) .Select(x => new { TeamName = x.Key, MemberCount = x.Count() }) .OrderBy(x => x.MemberCount) .ToList(); Assert.Equal(1, grouped[0].MemberCount); Assert.Equal(1, grouped[1].MemberCount); Assert.Equal(2, grouped[2].MemberCount); Assert.Equal(_names.Count, result.Players.Count); }
public void SplitOptionTest_분리조건이_여러가지인_경우() { var teamMaker = new SettingOptionTeamMaker(null); var teamCount = 3; var splitNames = new List <MemberName> { _names[2], _names[3], _names[4], _names[5] }; var settingOption = new TeamSettingOption() { SplitOptions = new() { new() { Names = new () { _names[0], _names[1] } }, new() { Names = splitNames }, }, }; var result = teamMaker.MakeTeam_Internal(_names, teamCount, settingOption); var team0 = result.Players.First(x => x.MemberName == _names[0]); var team1 = result.Players.First(x => x.MemberName == _names[1]); var splitTeams = result.Players .Where(x => splitNames.Any(name => name == x.MemberName)) .GroupBy(x => x.TeamName) .Select(x => new { TeamName = x.Key, MemberCount = x.Count() }) .OrderBy(x => x.MemberCount) .ToList(); var ordered = result.GroupByTeam .OrderBy(x => x.Value.Count) .ToList(); Assert.NotEqual(team0, team1); Assert.True(splitTeams.Last().MemberCount - splitTeams.First().MemberCount <= 1); Assert.True(ordered.Last().Value.Count - ordered.First().Value.Count <= 1); }
public void SplitOptionTest_분리조건_사람수가_팀_수보다_적은경우() { var teamMaker = new SettingOptionTeamMaker(null); var teamCount = 3; var settingOption = new TeamSettingOption() { SplitOptions = new () { new () { Names = new () { _names[0], _names[1] }, }, }, }; var teamResult = teamMaker.MakeTeam_Internal(_names, teamCount, settingOption); var p0 = teamResult.Players.First(x => x.MemberName == _names[0]); var p1 = teamResult.Players.First(x => x.MemberName == _names[1]); var ordered = teamResult.GroupByTeam .OrderBy(x => x.Value.Count) .ToList(); Assert.NotEqual(p0.TeamName.Id, p1.TeamName.Id); Assert.Equal(_names.Count, teamResult.Players.Count); Assert.Equal(teamCount, teamResult.GroupByTeam.Count); Assert.True(ordered.Last().Value.Count - ordered.First().Value.Count <= 1); }