From eac603667bd1573e053e4ae6551f7a6c46d13176 Mon Sep 17 00:00:00 2001 From: Jacob Cody Wimer Date: Tue, 4 Feb 2020 12:23:59 -0500 Subject: [PATCH] Added tests for 16 man double elimination and fixed eight man double elimination test syntax error --- ...ination_eight_man_match_generation_test.rb | 2 +- .../double_elimination_run_through_test.rb | 96 ++++++++++++ ...ation_sixteen_man_match_generation_test.rb | 141 ++++++++++++++++++ 3 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 test/integration/double_elimination_sixteen_man_match_generation_test.rb diff --git a/test/integration/double_elimination_eight_man_match_generation_test.rb b/test/integration/double_elimination_eight_man_match_generation_test.rb index 72df0d1..11b8932 100644 --- a/test/integration/double_elimination_eight_man_match_generation_test.rb +++ b/test/integration/double_elimination_eight_man_match_generation_test.rb @@ -78,7 +78,7 @@ class DoubleEliminationEightManMatchGeneration < ActionDispatch::IntegrationTest match2 = @tournament.matches.select{|m| m.bracket_position == "Conso Semis"}.first wrestler2 = get_wrestler_by_name("Test2") - match2.w1 = wrestler.id + match2.w1 = wrestler2.id match2.save assert wrestler.reload.placement_points == 3 diff --git a/test/integration/double_elimination_run_through_test.rb b/test/integration/double_elimination_run_through_test.rb index 2a11b57..eb7775d 100644 --- a/test/integration/double_elimination_run_through_test.rb +++ b/test/integration/double_elimination_run_through_test.rb @@ -63,5 +63,101 @@ class DoubleEliminationRunThrough < ActionDispatch::IntegrationTest # end end + test "16 man double elimination" do + create_double_elim_tournament_single_weight_1_6(14) + matches = @tournament.matches.reload + round1 = matches.select{|m| m.round == 1} + winner_by_name("Test9", round1.select{|m| m.bracket_position_number == 2}.first) + winner_by_name("Test5", round1.select{|m| m.bracket_position_number == 3}.first) + winner_by_name("Test4", round1.select{|m| m.bracket_position_number == 4}.first) + winner_by_name("Test13", round1.select{|m| m.bracket_position_number == 5}.first) + winner_by_name("Test6", round1.select{|m| m.bracket_position_number == 6}.first) + winner_by_name("Test10", round1.select{|m| m.bracket_position_number == 7}.first) + + quarter = matches.select{|m| m.bracket_position == "Quarter"}.sort_by{|m| m.bracket_position_number} + assert quarter.first.reload.wrestler1.name == "Test1" + assert quarter.first.reload.wrestler2.name == "Test9" + assert quarter.second.reload.wrestler1.name == "Test5" + assert quarter.second.reload.wrestler2.name == "Test4" + assert quarter.third.reload.wrestler1.name == "Test13" + assert quarter.third.reload.wrestler2.name == "Test6" + assert quarter.fourth.reload.wrestler1.name == "Test10" + assert quarter.fourth.reload.wrestler2.name == "Test2" + + conso_round2 = matches.select{|m| m.bracket_position == "Conso" and m.round == 2}.sort_by{|m| m.bracket_position_number} + assert conso_round2.first.reload.wrestler2.name == "Test8" + assert conso_round2.second.reload.wrestler1.name == "Test12" + assert conso_round2.second.reload.wrestler2.name == "Test14" + assert conso_round2.third.reload.wrestler1.name == "Test3" + assert conso_round2.third.reload.wrestler2.name == "Test11" + assert conso_round2.fourth.reload.wrestler1.name == "Test7" + + winner_by_name("Test1", quarter.first) + winner_by_name("Test5", quarter.second) + winner_by_name("Test13", quarter.third) + winner_by_name("Test10", quarter.fourth) + winner_by_name("Test12", conso_round2.second) + winner_by_name("Test3", conso_round2.third) + + semis = matches.select{|m| m.bracket_position == "Semis"}.sort_by{|m| m.bracket_position_number} + assert semis.first.reload.wrestler1.name == "Test1" + assert semis.first.reload.wrestler2.name == "Test5" + assert semis.second.reload.wrestler1.name == "Test13" + assert semis.second.reload.wrestler2.name == "Test10" + + conso_round3 = matches.select{|m| m.bracket_position == "Conso" and m.round == 3}.sort_by{|m| m.bracket_position_number} + assert conso_round3.first.reload.wrestler1.name == "Test2" + assert conso_round3.first.reload.wrestler2.name == "Test8" + assert conso_round3.second.reload.wrestler1.name == "Test6" + assert conso_round3.second.reload.wrestler2.name == "Test12" + assert conso_round3.third.reload.wrestler1.name == "Test4" + assert conso_round3.third.reload.wrestler2.name == "Test3" + assert conso_round3.fourth.reload.wrestler1.name == "Test9" + assert conso_round3.fourth.reload.wrestler2.name == "Test7" + + winner_by_name("Test2", conso_round3.first) + winner_by_name("Test6", conso_round3.second) + winner_by_name("Test3", conso_round3.third) + winner_by_name("Test9", conso_round3.fourth) + + conso_quarter = matches.select{|m| m.bracket_position == "Conso Quarter"}.sort_by{|m| m.bracket_position_number} + assert conso_quarter.first.reload.wrestler1.name == "Test2" + assert conso_quarter.first.reload.wrestler2.name == "Test6" + assert conso_quarter.second.reload.wrestler1.name == "Test3" + assert conso_quarter.second.reload.wrestler2.name == "Test9" + + winner_by_name("Test5",semis.first) + winner_by_name("Test10",semis.second) + winner_by_name("Test2", conso_quarter.first) + winner_by_name("Test3", conso_quarter.second) + + conso_semis = matches.select{|m| m.bracket_position == "Conso Semis"}.sort_by{|m| m.bracket_position_number} + assert conso_semis.first.reload.wrestler1.name == "Test1" + assert conso_semis.first.reload.wrestler2.name == "Test2" + assert conso_semis.second.reload.wrestler1.name == "Test13" + assert conso_semis.second.reload.wrestler2.name == "Test3" + + winner_by_name("Test2",conso_semis.first) + winner_by_name("Test3",conso_semis.second) + + first_finals = matches.select{|m| m.bracket_position == "1/2"}.first + third_finals = matches.select{|m| m.bracket_position == "3/4"}.first + fifth_finals = matches.select{|m| m.bracket_position == "5/6"}.first + + assert first_finals.reload.wrestler1.name == "Test5" + assert first_finals.reload.wrestler2.name == "Test10" + + assert third_finals.reload.wrestler1.name == "Test2" + assert third_finals.reload.wrestler2.name == "Test3" + + assert fifth_finals.reload.wrestler1.name == "Test1" + assert fifth_finals.reload.wrestler2.name == "Test13" + + # DEBUG + # matches.sort_by{|m| m.bout_number}.each do |match| + # match.reload + # puts "Round #{match.round} #{match.w1_bracket_name} vs #{match.w2_bracket_name}" + # end + end end \ No newline at end of file diff --git a/test/integration/double_elimination_sixteen_man_match_generation_test.rb b/test/integration/double_elimination_sixteen_man_match_generation_test.rb new file mode 100644 index 0000000..7eb0c20 --- /dev/null +++ b/test/integration/double_elimination_sixteen_man_match_generation_test.rb @@ -0,0 +1,141 @@ +require 'test_helper' + +class DoubleEliminationSixteenManMatchGeneration < ActionDispatch::IntegrationTest + def setup + create_double_elim_tournament_single_weight_1_6(14) + end + + test "Match generation works" do + assert @tournament.matches.count == 29 + assert @tournament.matches.select{|m| m.bracket_position == "1/2"}.count == 1 + assert @tournament.matches.select{|m| m.bracket_position == "3/4"}.count == 1 + assert @tournament.matches.select{|m| m.bracket_position == "5/6"}.count == 1 + assert @tournament.matches.select{|m| m.bracket_position == "Bracket" and m.round == 1}.count == 8 + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2}.count == 4 + assert @tournament.matches.select{|m| m.bracket_position == "Quarter"}.count == 4 + assert @tournament.matches.select{|m| m.bracket_position == "Semis"}.count == 2 + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 3}.count == 4 + assert @tournament.matches.select{|m| m.bracket_position == "Conso Quarter"}.count == 2 + assert @tournament.matches.select{|m| m.bracket_position == "Conso Semis"}.count == 2 + end + + test "Seeded wrestlers have correct first line" do + @tournament.matches.reload + match1 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 1}.first + match2 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 2}.first + match3 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 3}.first + match4 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 4}.first + match5 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 5}.first + match6 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 6}.first + match7 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 7}.first + match8 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 8}.first + + assert match1.wrestler1.bracket_line == 1 + assert match1.loser2_name == "BYE" + + assert match2.wrestler1.bracket_line == 8 + assert match2.wrestler2.bracket_line == 9 + + assert match3.wrestler1.bracket_line == 5 + assert match3.wrestler2.bracket_line == 12 + + assert match4.wrestler1.bracket_line == 4 + assert match4.wrestler2.bracket_line == 14 + + assert match5.wrestler1.bracket_line == 3 + assert match5.wrestler2.bracket_line == 13 + + assert match6.wrestler1.bracket_line == 6 + assert match6.wrestler2.bracket_line == 11 + + assert match7.wrestler1.bracket_line == 7 + assert match7.wrestler2.bracket_line == 10 + + assert match8.wrestler1.bracket_line == 2 + assert match8.loser2_name == "BYE" + end + + test "Byes are advanced correctly" do + @tournament.matches.reload + match1 = @tournament.matches.select{|match| match.round == 2 and match.bracket_position == "Quarter" and match.bracket_position_number == 1}.first + match2 = @tournament.matches.select{|match| match.round == 2 and match.bracket_position == "Quarter" and match.bracket_position_number == 4}.first + + assert match1.wrestler1.name == "Test1" + assert match2.wrestler2.name == "Test2" + end + + test "Loser names set up correctly" do + @tournament.matches.reload + match1 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 1}.first + match2 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 2}.first + match3 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 3}.first + match4 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 4}.first + match5 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 5}.first + match6 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 6}.first + match7 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 7}.first + match8 = @tournament.matches.select{|match| match.round == 1 and match.bracket_position_number == 8}.first + + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 1}.first.loser1_name == "BYE" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 1}.first.loser2_name == "Loser of #{match2.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 2}.first.loser1_name == "Loser of #{match3.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 2}.first.loser2_name == "Loser of #{match4.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 3}.first.loser1_name == "Loser of #{match5.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 3}.first.loser2_name == "Loser of #{match6.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 4}.first.loser1_name == "Loser of #{match7.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "Conso" and m.round == 2 && m.bracket_position_number == 4}.first.loser2_name == "BYE" + + quarter1 = @tournament.matches.select{|match| match.bracket_position == "Quarter" and match.bracket_position_number == 1}.first + quarter2 = @tournament.matches.select{|match| match.bracket_position == "Quarter" and match.bracket_position_number == 2}.first + quarter3 = @tournament.matches.select{|match| match.bracket_position == "Quarter" and match.bracket_position_number == 3}.first + quarter4 = @tournament.matches.select{|match| match.bracket_position == "Quarter" and match.bracket_position_number == 4}.first + consoround2match1 = @tournament.matches.select{|match| match.bracket_position == "Conso" and match.round == 3 && match.bracket_position_number == 1}.first + consoround2match2 = @tournament.matches.select{|match| match.bracket_position == "Conso" and match.round == 3 && match.bracket_position_number == 2}.first + consoround2match3 = @tournament.matches.select{|match| match.bracket_position == "Conso" and match.round == 3 && match.bracket_position_number == 3}.first + consoround2match4 = @tournament.matches.select{|match| match.bracket_position == "Conso" and match.round == 3 && match.bracket_position_number == 4}.first + + assert consoround2match1.loser1_name == "Loser of #{quarter4.bout_number}" + assert consoround2match2.loser1_name == "Loser of #{quarter3.bout_number}" + assert consoround2match3.loser1_name == "Loser of #{quarter2.bout_number}" + assert consoround2match4.loser1_name == "Loser of #{quarter1.bout_number}" + + semis1 = @tournament.matches.select{|match| match.bracket_position == "Semis" and match.bracket_position_number == 1}.first + semis2 = @tournament.matches.select{|match| match.bracket_position == "Semis" and match.bracket_position_number == 2}.first + consosemis1 = @tournament.matches.select{|match| match.bracket_position == "Conso Semis" and match.bracket_position_number == 1}.first + consosemis2 = @tournament.matches.select{|match| match.bracket_position == "Conso Semis" and match.bracket_position_number == 2}.first + + assert consosemis1.loser1_name == "Loser of #{semis1.bout_number}" + assert consosemis2.loser1_name == "Loser of #{semis2.bout_number}" + + assert @tournament.matches.select{|m| m.bracket_position == "5/6" && m.bracket_position_number == 1}.first.loser1_name == "Loser of #{consosemis1.bout_number}" + assert @tournament.matches.select{|m| m.bracket_position == "5/6" && m.bracket_position_number == 1}.first.loser2_name == "Loser of #{consosemis2.bout_number}" + end + + test "Placement points are given when moving through bracket" do + match = @tournament.matches.select{|m| m.bracket_position == "Semis"}.first + wrestler = get_wrestler_by_name("Test1") + match.w1 = wrestler.id + match.save + + match2 = @tournament.matches.select{|m| m.bracket_position == "Conso Semis"}.first + wrestler2 = get_wrestler_by_name("Test2") + match2.w1 = wrestler2.id + match2.save + + assert wrestler.reload.placement_points == 3 + assert wrestler2.reload.placement_points == 3 + end + + test "Run through all matches works" do + @tournament.matches.sort_by{ |match| match.bout_number }.each do |match| + match.reload + if match.finished != 1 and match.w1 and match.w2 + match.winner_id = match.w1 + match.win_type = "Decision" + match.score = "0-0" + match.finished = 1 + match.save + end + end + assert @tournament.matches.reload.select{|m| m.finished == 0}.count == 0 + end +end \ No newline at end of file