Ejemplo n.º 1
0
        public void TeamScore_3x4_3x4_nosuffled()
        {
            // *** Prepare input data ***
            // All member must be added in flat
            var afterMemberList = new List <List <String> >()
            {
                // member from Team1
                new String[] { "2", "MEMBER1fromT1", "TEAM1", "INFO1-1-1" }.ToList(),
                new String[] { "2", "MEMBER2fromT1", "TEAM1", "INFO1-2-1" }.ToList(),
                new String[] { "2", "MEMBER3fromT1", "TEAM1", "INFO1-3-1" }.ToList(),
                new String[] { "2", "MEMBER4fromT1", "TEAM1", "INFO1-4-1" }.ToList(),
                // member from Team2
                new String[] { "1", "MEMBER1fromT2", "TEAM2", "INFO2-1-1" }.ToList(),
                new String[] { "1", "MEMBER2fromT2", "TEAM2", "INFO2-2-1" }.ToList(),
                new String[] { "1", "MEMBER3fromT2", "TEAM2", "INFO2-3-1" }.ToList(),
                new String[] { "1", "MEMBER4fromT2", "TEAM2", "INFO2-4-1" }.ToList(),
                // member from Team3
                new String[] { "3", "MEMBER1fromT3", "TEAM3", "INFO3-1-1" }.ToList(),
                new String[] { "3", "MEMBER2fromT3", "TEAM3", "INFO3-2-1" }.ToList(),
                new String[] { "3", "MEMBER3fromT3", "TEAM3", "INFO3-3-1" }.ToList(),
                new String[] { "3", "MEMBER4fromT3", "TEAM3", "INFO3-4-1" }.ToList(),
            };

            // *** Call method ***
            float score = TeamReform.ReformScore(afterMemberList, 0, 2);

            // after 1 = T2, T2, T2, T2
            // after 2 = T1, T1, T1, T1
            // after 3 = T3, T3, T3, T3
            // no shuffle 3
            // same teammate 3+3+3
            // same team combination [0]
            Assert.Equal(createScoreValue(3, 9, null), score);
        }
Ejemplo n.º 2
0
        public void AsignBeforeTeamMemberToAfterTeam_3x4incomplete_to_2xx()
        {
            // Before:3Teams, each Team has 4 people
            var beforeTeamMemberMap = new Dictionary <String, List <List <String> > >()
            {
                { "TEAM1", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "1", "NAME1_1"
                      },
                  } },
                { "TEAM2", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "5", "NAME2_1"
                      },
                      new List <String>()
                      {
                          "6", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "7", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "8", "NAME2_2"
                      },
                  } },
                { "TEAM3", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "9", "NAME3_1"
                      },
                      new List <String>()
                      {
                          "10", "NAME3_2"
                      },
                  } },
            };

            // After :2Teams, each Team has 6 people
            var result = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 2, false);

            // Contents check
            // if not shuffled, Team will choose TEAM1->TEAM2->TEAM3
            Assert.Equal(beforeTeamMemberMap["TEAM1"][0], result["0"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][0], result["1"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][1], result["0"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][2], result["1"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][3], result["0"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][0], result["1"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][1], result["0"][3]);
        }
Ejemplo n.º 3
0
        public void AsignBeforeTeamMemberToAfterTeam_3x4incomplete_to_4xx()
        {
            // Before:3Teams, each Team has 4 people
            var beforeTeamMemberMap = new Dictionary <String, List <List <String> > >()
            {
                { "TEAM1", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "1", "NAME1_1"
                      },
                      new List <String>()
                      {
                          "2", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "3", "NAME1_2"
                      },
                  } },
                { "TEAM2", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "5", "NAME2_1"
                      },
                  } },
                { "TEAM3", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "9", "NAME3_1"
                      },
                      new List <String>()
                      {
                          "10", "NAME3_2"
                      },
                      new List <String>()
                      {
                          "11", "NAME3_3"
                      },
                  } },
            };

            // After :4Teams, each Team has 3 people
            var result = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 4, false);

            // Contents check
            Assert.Equal(beforeTeamMemberMap["TEAM1"][0], result["0"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][1], result["1"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][2], result["2"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][0], result["3"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][0], result["0"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][1], result["1"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][2], result["2"][1]);
        }
Ejemplo n.º 4
0
        public void ConvertTeamMemberMappping_3incompletex4()
        {
            // 3Teams, each Team has 4 people
            var flatMember = new List <List <String> >()
            {
                new List <String>()
                {
                    "1", "TEAM1", "NAME1_1"
                },
                new List <String>()
                {
                    "2", "TEAM2", "NAME2_1"
                },
                new List <String>()
                {
                    "3", "TEAM3", "NAME3_1"
                },
                new List <String>()
                {
                    "6", "TEAM3", "NAME3_2"
                },
                new List <String>()
                {
                    "8", "TEAM2", "NAME2_3"
                },
                new List <String>()
                {
                    "12", "TEAM3", "NAME3_4"
                },
            };

            var result = TeamReform.ConvertTeamMemberMappping(flatMember, 1);

            Assert.Equal(3, result.Keys.Count);
            Assert.Equal(1, result["TEAM1"].Count);
            Assert.Equal(flatMember[0], result["TEAM1"][0]);

            Assert.Equal(2, result["TEAM2"].Count);
            Assert.Equal(flatMember[1], result["TEAM2"][0]);
            Assert.Equal(flatMember[4], result["TEAM2"][1]);

            Assert.Equal(3, result["TEAM3"].Count);
            Assert.Equal(flatMember[2], result["TEAM3"][0]);
            Assert.Equal(flatMember[3], result["TEAM3"][1]);
            Assert.Equal(flatMember[5], result["TEAM3"][2]);
        }
Ejemplo n.º 5
0
        public void AsignBeforeTeamMemberToAfterTeam_3x4_to_4x3()
        {
            // Before:3Teams, each Team has 4 people
            var beforeTeamMemberMap = new Dictionary <String, List <List <String> > >()
            {
                { "TEAM1", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "1", "NAME1_1"
                      },
                      new List <String>()
                      {
                          "2", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "3", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "4", "NAME1_2"
                      },
                  } },
                { "TEAM2", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "5", "NAME2_1"
                      },
                      new List <String>()
                      {
                          "6", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "7", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "8", "NAME2_2"
                      },
                  } },
                { "TEAM3", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "9", "NAME3_1"
                      },
                      new List <String>()
                      {
                          "10", "NAME3_2"
                      },
                      new List <String>()
                      {
                          "11", "NAME3_3"
                      },
                      new List <String>()
                      {
                          "12", "NAME3_4"
                      },
                  } },
            };

            // After :4Teams, each Team has 3 people
            var result = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 4, false);

            // List size check
            Assert.Equal(4, result.Keys.Count);
            foreach (String team in result.Keys)
            {
                Assert.Equal(3, result[team].Count);
            }

            // Contents check
            Assert.Equal(beforeTeamMemberMap["TEAM1"][0], result["0"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][1], result["1"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][2], result["2"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][3], result["3"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][0], result["0"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][1], result["1"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][2], result["2"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][3], result["3"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][0], result["0"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][1], result["1"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][2], result["2"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][3], result["3"][2]);
        }
Ejemplo n.º 6
0
        public void ConvertTeamMemberMappping_3x4()
        {
            // 3Teams, each Team has 4 people
            var flatMember = new List <List <String> >()
            {
                new List <String>()
                {
                    "1", "TEAM1", "NAME1_1"
                },
                new List <String>()
                {
                    "2", "TEAM2", "NAME2_1"
                },
                new List <String>()
                {
                    "3", "TEAM3", "NAME3_1"
                },
                new List <String>()
                {
                    "4", "TEAM1", "NAME1_2"
                },
                new List <String>()
                {
                    "5", "TEAM2", "NAME2_2"
                },
                new List <String>()
                {
                    "6", "TEAM3", "NAME3_2"
                },
                new List <String>()
                {
                    "7", "TEAM1", "NAME1_3"
                },
                new List <String>()
                {
                    "8", "TEAM2", "NAME2_3"
                },
                new List <String>()
                {
                    "9", "TEAM3", "NAME3_3"
                },
                new List <String>()
                {
                    "10", "TEAM1", "NAME1_4"
                },
                new List <String>()
                {
                    "11", "TEAM2", "NAME2_4"
                },
                new List <String>()
                {
                    "12", "TEAM3", "NAME3_4"
                },
            };

            var result = TeamReform.ConvertTeamMemberMappping(flatMember, 1);

            Assert.Equal(3, result.Keys.Count);
            Assert.Equal(4, result["TEAM1"].Count);
            Assert.Equal(flatMember[0], result["TEAM1"][0]);
            Assert.Equal(flatMember[3], result["TEAM1"][1]);
            Assert.Equal(flatMember[6], result["TEAM1"][2]);
            Assert.Equal(flatMember[9], result["TEAM1"][3]);

            Assert.Equal(4, result["TEAM2"].Count);
            Assert.Equal(flatMember[1], result["TEAM2"][0]);
            Assert.Equal(flatMember[4], result["TEAM2"][1]);
            Assert.Equal(flatMember[7], result["TEAM2"][2]);
            Assert.Equal(flatMember[10], result["TEAM2"][3]);

            Assert.Equal(4, result["TEAM3"].Count);
            Assert.Equal(flatMember[2], result["TEAM3"][0]);
            Assert.Equal(flatMember[5], result["TEAM3"][1]);
            Assert.Equal(flatMember[8], result["TEAM3"][2]);
            Assert.Equal(flatMember[11], result["TEAM3"][3]);
        }
Ejemplo n.º 7
0
        public void AsignBeforeTeamMemberToAfterTeam_3x4_to_4x3_random___sometimes_failed()
        {
            // Before:3Teams, each Team has 4 people
            var beforeTeamMemberMap = new Dictionary <String, List <List <String> > >()
            {
                { "TEAM1", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "1", "NAME1_1"
                      },
                      new List <String>()
                      {
                          "2", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "3", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "4", "NAME1_2"
                      },
                  } },
                { "TEAM2", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "5", "NAME2_1"
                      },
                      new List <String>()
                      {
                          "6", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "7", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "8", "NAME2_2"
                      },
                  } },
                { "TEAM3", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "9", "NAME3_1"
                      },
                      new List <String>()
                      {
                          "10", "NAME3_2"
                      },
                      new List <String>()
                      {
                          "11", "NAME3_3"
                      },
                      new List <String>()
                      {
                          "12", "NAME3_4"
                      },
                  } },
            };

            // After :4Teams, each Team has 3 people
            var result1 = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 4, true);
            var result2 = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 4, true);

            // List size check
            Assert.Equal(4, result1.Keys.Count);
            Assert.Equal(4, result2.Keys.Count);
            // result1 & result2 should be defferent
            bool isDefferent = false;

            foreach (String team in result1.Keys)
            {
                Assert.Equal(3, result1[team].Count);
                Assert.Equal(3, result2[team].Count);

                isDefferent |= (result1[team][0] != result2[team][0]);
                isDefferent |= (result1[team][1] != result2[team][1]);
                isDefferent |= (result1[team][2] != result2[team][2]);
            }
            Assert.True(isDefferent, "result1 & result2 should be defferent, but sometimes this test is failed...");
        }
Ejemplo n.º 8
0
        public void AsignBeforeTeamMemberToAfterTeam_3x4_to_2x6()
        {
            // Before:3Teams, each Team has 4 people
            var beforeTeamMemberMap = new Dictionary <String, List <List <String> > >()
            {
                { "TEAM1", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "1", "NAME1_1"
                      },
                      new List <String>()
                      {
                          "2", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "3", "NAME1_2"
                      },
                      new List <String>()
                      {
                          "4", "NAME1_2"
                      },
                  } },
                { "TEAM2", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "5", "NAME2_1"
                      },
                      new List <String>()
                      {
                          "6", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "7", "NAME2_2"
                      },
                      new List <String>()
                      {
                          "8", "NAME2_2"
                      },
                  } },
                { "TEAM3", new List <List <String> >()
                  {
                      new List <String>()
                      {
                          "9", "NAME3_1"
                      },
                      new List <String>()
                      {
                          "10", "NAME3_2"
                      },
                      new List <String>()
                      {
                          "11", "NAME3_3"
                      },
                      new List <String>()
                      {
                          "12", "NAME3_4"
                      },
                  } },
            };

            // After :2Teams, each Team has 6 people
            var result = TeamReform.AssignBeforeTeamMemberToAfterTeam(beforeTeamMemberMap, 2, false);

            // List size check
            Assert.Equal(2, result.Keys.Count);
            foreach (String team in result.Keys)
            {
                Assert.Equal(6, result[team].Count);
            }

            // Contents check
            // if not shuffled, Team will choose TEAM1->TEAM2->TEAM3
            Assert.Equal(beforeTeamMemberMap["TEAM1"][0], result["0"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][1], result["1"][0]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][2], result["0"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM1"][3], result["1"][1]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][0], result["0"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][1], result["1"][2]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][2], result["0"][3]);
            Assert.Equal(beforeTeamMemberMap["TEAM2"][3], result["1"][3]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][0], result["0"][4]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][1], result["1"][4]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][2], result["0"][5]);
            Assert.Equal(beforeTeamMemberMap["TEAM3"][3], result["1"][5]);
        }
Ejemplo n.º 9
0
        public void ReformTeam_3x4_to_4x3()
        {
            // *** Prepare input data ***
            // All member in before Team must be added in flat
            var beforeMemberList = new List <List <String> >()
            {
                // member from Before Team1 (Team key is index 1)
                new String[] { "MEMBER1fromT1", "TEAM1", "INFO1-1-1" }.ToList(),
                new String[] { "MEMBER2fromT1", "TEAM1", "INFO1-2-1" }.ToList(),
                new String[] { "MEMBER3fromT1", "TEAM1", "INFO1-3-1" }.ToList(),
                new String[] { "MEMBER4fromT1", "TEAM1", "INFO1-4-1" }.ToList(),
                // member from Before Team2 (Team key is index 1)
                new String[] { "MEMBER1fromT2", "TEAM2", "INFO2-1-1" }.ToList(),
                new String[] { "MEMBER2fromT2", "TEAM2", "INFO2-2-1" }.ToList(),
                new String[] { "MEMBER3fromT2", "TEAM2", "INFO2-3-1" }.ToList(),
                new String[] { "MEMBER4fromT2", "TEAM2", "INFO2-4-1" }.ToList(),
                // member from Before Team12 (Team key is index 1)
                new String[] { "MEMBER1fromT12", "TEAM12", "INFO12-1-1" }.ToList(),
                new String[] { "MEMBER2fromT12", "TEAM12", "INFO12-2-1" }.ToList(),
                new String[] { "MEMBER3fromT12", "TEAM12", "INFO12-3-1" }.ToList(),
                new String[] { "MEMBER4fromT12", "TEAM12", "INFO12-4-1" }.ToList(),
            };

            int afterTeamNum = 4;

            // *** Call method ***
            List <List <String> > afterMemberList = TeamReform.ReformTeam_Body(beforeMemberList.ToList(), 1, afterTeamNum);

            // *** Use result ***
            // check all before member exists
            Assert.Equal(beforeMemberList.Count, afterMemberList.Count);
            foreach (List <String> beforeMember in beforeMemberList)
            {
                bool isExist = false;
                foreach (List <String> afterMember in afterMemberList)
                {
                    bool match =
                        (beforeMember[0] == afterMember[1]) &&
                        (beforeMember[1] == afterMember[2]) &&
                        (beforeMember[2] == afterMember[3]);

                    if (match)
                    {
                        isExist = true;
                        break;
                    }
                }
                Assert.True(isExist);
            }

            var teamMemberMap = new Dictionary <String, List <List <String> > >();

            teamMemberMap["0"] = new List <List <String> >();
            teamMemberMap["1"] = new List <List <String> >();
            teamMemberMap["2"] = new List <List <String> >();
            teamMemberMap["3"] = new List <List <String> >();
            // check after team has same number of members
            foreach (List <String> afterMember in afterMemberList)
            {
                teamMemberMap[afterMember[0]].Add(afterMember);
            }
            Assert.Equal(3, teamMemberMap["0"].Count);
            Assert.Equal(3, teamMemberMap["1"].Count);
            Assert.Equal(3, teamMemberMap["2"].Count);
            Assert.Equal(3, teamMemberMap["3"].Count);

            // check in a after Team has only 1 of same before Team member
            foreach (List <List <String> > memberList in teamMemberMap.Values)
            {
                Assert.Equal("TEAM", memberList[0][2].Substring(0, 4));
                Assert.Equal("TEAM", memberList[1][2].Substring(0, 4));
                Assert.Equal("TEAM", memberList[2][2].Substring(0, 4));
                Assert.False(memberList[0][2] == memberList[1][2]);
                Assert.False(memberList[1][2] == memberList[2][2]);
                Assert.False(memberList[2][2] == memberList[0][2]);
            }
        }
Ejemplo n.º 10
0
        public void TeamScore_12x4_12x4()
        {
            // *** Prepare input data ***
            // All member must be added in flat
            var afterMemberList = new List <List <String> >()
            {
                // member from Team1
                new String[] { "1", "MEMBER1fromT1", "TEAM1", "INFO1-1-1" }.ToList(),
                new String[] { "12", "MEMBER2fromT1", "TEAM1", "INFO1-2-1" }.ToList(),
                new String[] { "3", "MEMBER3fromT1", "TEAM1", "INFO1-3-1" }.ToList(),
                new String[] { "4", "MEMBER4fromT1", "TEAM1", "INFO1-4-1" }.ToList(),
                // member from Team2
                new String[] { "1", "MEMBER1fromT2", "TEAM2", "INFO2-1-1" }.ToList(),
                new String[] { "5", "MEMBER2fromT2", "TEAM2", "INFO2-2-1" }.ToList(),
                new String[] { "6", "MEMBER3fromT2", "TEAM2", "INFO2-3-1" }.ToList(),
                new String[] { "7", "MEMBER4fromT2", "TEAM2", "INFO2-4-1" }.ToList(),
                // member from Team3
                new String[] { "1", "MEMBER1fromT3", "TEAM3", "INFO3-1-1" }.ToList(),
                new String[] { "2", "MEMBER2fromT3", "TEAM3", "INFO3-2-1" }.ToList(),
                new String[] { "5", "MEMBER3fromT3", "TEAM3", "INFO3-3-1" }.ToList(),
                new String[] { "8", "MEMBER4fromT3", "TEAM3", "INFO3-4-1" }.ToList(),
                // member from Team4
                new String[] { "2", "MEMBER1fromT4", "TEAM4", "INFO4-1-1" }.ToList(),
                new String[] { "3", "MEMBER2fromT4", "TEAM4", "INFO4-2-1" }.ToList(),
                new String[] { "5", "MEMBER3fromT4", "TEAM4", "INFO4-3-1" }.ToList(),
                new String[] { "6", "MEMBER4fromT4", "TEAM4", "INFO4-4-1" }.ToList(),
                // member from Team5
                new String[] { "3", "MEMBER1fromT5", "TEAM5", "INFO5-1-1" }.ToList(),
                new String[] { "4", "MEMBER2fromT5", "TEAM5", "INFO5-2-1" }.ToList(),
                new String[] { "6", "MEMBER3fromT5", "TEAM5", "INFO5-3-1" }.ToList(),
                new String[] { "7", "MEMBER4fromT5", "TEAM5", "INFO5-4-1" }.ToList(),
                // member from Team6
                new String[] { "4", "MEMBER1fromT6", "TEAM6", "INFO6-1-1" }.ToList(),
                new String[] { "7", "MEMBER2fromT6", "TEAM6", "INFO6-2-1" }.ToList(),
                new String[] { "8", "MEMBER3fromT6", "TEAM6", "INFO6-3-1" }.ToList(),
                new String[] { "9", "MEMBER4fromT6", "TEAM6", "INFO6-4-1" }.ToList(),
                // member from Team7
                new String[] { "8", "MEMBER1fromT7", "TEAM7", "INFO7-1-1" }.ToList(),
                new String[] { "10", "MEMBER2fromT7", "TEAM7", "INFO7-2-1" }.ToList(),
                new String[] { "11", "MEMBER3fromT7", "TEAM7", "INFO7-3-1" }.ToList(),
                new String[] { "12", "MEMBER4fromT7", "TEAM7", "INFO7-4-1" }.ToList(),
                // member from Team8
                new String[] { "9", "MEMBER1fromT8", "TEAM8", "INFO8-1-1" }.ToList(),
                new String[] { "1", "MEMBER2fromT8", "TEAM8", "INFO8-2-1" }.ToList(),
                new String[] { "2", "MEMBER3fromT8", "TEAM8", "INFO8-3-1" }.ToList(),
                new String[] { "3", "MEMBER4fromT8", "TEAM8", "INFO8-4-1" }.ToList(),
                // member from Team9
                new String[] { "9", "MEMBER1fromT9", "TEAM9", "INFO9-1-1" }.ToList(),
                new String[] { "10", "MEMBER2fromT9", "TEAM9", "INFO9-2-1" }.ToList(),
                new String[] { "4", "MEMBER3fromT9", "TEAM9", "INFO9-3-1" }.ToList(),
                new String[] { "5", "MEMBER4fromT9", "TEAM9", "INFO9-4-1" }.ToList(),
                // member from Team10
                new String[] { "10", "MEMBER1fromT10", "TEAM10", "INFO10-1-1" }.ToList(),
                new String[] { "11", "MEMBER2fromT10", "TEAM10", "INFO10-2-1" }.ToList(),
                new String[] { "12", "MEMBER3fromT10", "TEAM10", "INFO10-3-1" }.ToList(),
                new String[] { "6", "MEMBER4fromT10", "TEAM10", "INFO10-4-1" }.ToList(),
                // member from Team11
                new String[] { "11", "MEMBER1fromT11", "TEAM11", "INFO11-1-1" }.ToList(),
                new String[] { "12", "MEMBER2fromT11", "TEAM11", "INFO11-2-1" }.ToList(),
                new String[] { "7", "MEMBER3fromT11", "TEAM11", "INFO11-3-1" }.ToList(),
                new String[] { "8", "MEMBER4fromT11", "TEAM11", "INFO11-4-1" }.ToList(),
                // member from Team12
                new String[] { "2", "MEMBER1fromT12", "TEAM12", "INFO12-1-1" }.ToList(),
                new String[] { "9", "MEMBER2fromT12", "TEAM12", "INFO12-2-1" }.ToList(),
                new String[] { "10", "MEMBER3fromT12", "TEAM12", "INFO12-3-1" }.ToList(),
                new String[] { "11", "MEMBER4fromT12", "TEAM12", "INFO12-4-1" }.ToList(),
            };

            // *** Call method ***
            float score = TeamReform.ReformScore(afterMemberList, 0, 2);

            // after 1 = T1, T2, T3, T8
            // after 2 = T3, T4, T8, T12
            // after 3 = T1, T4, T5, T8
            // after 4 = T1, T5, T6, T9
            // after 5 = T2, T3, T4, T9
            // after 6 = T2, T4, T5, T10
            // after 7 = T2, T5, T6, T11
            // after 8 = T3, T6, T7, T11
            // after 9 = T6, T8, T9, T12
            // after10 = T7, T9, T10, T12
            // after11 = T7, T10, T11, T12
            // after12 = T1, T7, T10, T11
            // no shuffle 0
            // same teammate 0
            // same team combination [0, 2, 1+2+1+2+2+2+1+2+1+1+2, 0]
            Assert.Equal(createScoreValue(0, 0, new int[] { 0, 2, 17, 0 }), score);
        }