mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-04-06 14:36:59 +00:00
Fixed pool order deducted points bug
This commit is contained in:
@@ -18,6 +18,8 @@ class PoolOrder
|
|||||||
|
|
||||||
def setOriginalPoints
|
def setOriginalPoints
|
||||||
@wrestlers.each do |w|
|
@wrestlers.each do |w|
|
||||||
|
w.pool_placement_tiebreaker = nil
|
||||||
|
w.pool_placement = nil
|
||||||
w.poolAdvancePoints = w.pool_wins.size
|
w.poolAdvancePoints = w.pool_wins.size
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -31,42 +33,44 @@ class PoolOrder
|
|||||||
|
|
||||||
def wrestlersWithSamePoints
|
def wrestlersWithSamePoints
|
||||||
@wrestlers.each do |w|
|
@wrestlers.each do |w|
|
||||||
wrestlersWithSamePoints = @wrestlers.select{|wr| wr.poolAdvancePoints == w.poolAdvancePoints}
|
wrestlersWithSamePointsLocal = @wrestlers.select{|wr| wr.poolAdvancePoints == w.poolAdvancePoints}
|
||||||
if wrestlersWithSamePoints.size > 0
|
if wrestlersWithSamePointsLocal.size > 1
|
||||||
return wrestlersWithSamePoints
|
return wrestlersWithSamePointsLocal
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
return []
|
||||||
end
|
end
|
||||||
|
|
||||||
def ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
def ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
if wrestlersWithSamePoints.size == originalTieSize
|
if wrestlersWithSamePoints.size == originalTieSize
|
||||||
yield
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def breakTie
|
def breakTie
|
||||||
originalTieSize = wrestlersWithSamePoints.size
|
originalTieSize = wrestlersWithSamePoints.size
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { deductedPoints }
|
deductedPoints(originalTieSize) if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
if originalTieSize == 2
|
if originalTieSize == 2
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { headToHead }
|
headToHead if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
end
|
end
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { teamPoints }
|
teamPoints if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostFalls }
|
mostFalls if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostTechs }
|
mostTechs if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostMajors }
|
mostMajors if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { mostDecisionPointsScored }
|
mostDecisionPointsScored if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { fastest_pins }
|
fastest_pins if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize) { coinFlip }
|
coinFlip if ifWrestlersWithSamePointsIsSameAsOriginal(originalTieSize)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def headToHead
|
def headToHead
|
||||||
wrestlersWithSamePoints.each do |wr|
|
wrestlersWithSamePoints.each do |wr|
|
||||||
otherWrestler = wrestlersWithSamePoints.select{|w| w.id != wr.id}.first
|
otherWrestler = wrestlersWithSamePoints.select{|w| w.id != wr.id}.first
|
||||||
if wr.match_against(otherWrestler).first.winner_id == wr.id
|
if otherWrestler and wr.match_against(otherWrestler).first.winner_id == wr.id
|
||||||
addPointsToWrestlersAhead(wr)
|
addPointsToWrestlersAhead(wr)
|
||||||
wr.pool_placement_tiebreaker = "Head to Head"
|
wr.pool_placement_tiebreaker = "Head to Head"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -83,7 +87,7 @@ class PoolOrder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def deductedPoints
|
def deductedPoints(originalTieSize)
|
||||||
pointsArray = []
|
pointsArray = []
|
||||||
wrestlersWithSamePoints.each do |w|
|
wrestlersWithSamePoints.each do |w|
|
||||||
pointsArray << w.total_points_deducted
|
pointsArray << w.total_points_deducted
|
||||||
@@ -91,10 +95,11 @@ class PoolOrder
|
|||||||
leastPoints = pointsArray.min
|
leastPoints = pointsArray.min
|
||||||
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.total_points_deducted == leastPoints}
|
wrestlersWithLeastDeductedPoints = wrestlersWithSamePoints.select{|w| w.total_points_deducted == leastPoints}
|
||||||
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
addPointsToWrestlersAhead(wrestlersWithLeastDeductedPoints.first)
|
||||||
wrestlersWithLeastDeductedPoints.each do |wr|
|
if wrestlersWithLeastDeductedPoints.size != originalTieSize
|
||||||
wr.pool_placement_tiebreaker = "Least Deducted Points"
|
wrestlersWithLeastDeductedPoints.each do |wr|
|
||||||
wr.save
|
wr.pool_placement_tiebreaker = "Least Deducted Points"
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -108,7 +113,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersWithMostPoints.first)
|
addPointsToWrestlersAhead(wrestlersWithMostPoints.first)
|
||||||
wrestlersWithMostPoints.each do |wr|
|
wrestlersWithMostPoints.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Points Scored"
|
wr.pool_placement_tiebreaker = "Points Scored"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
secondPoints = pointsArray.sort[-2]
|
secondPoints = pointsArray.sort[-2]
|
||||||
@@ -116,7 +120,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersWithSecondMostPoints.first)
|
addPointsToWrestlersAhead(wrestlersWithSecondMostPoints.first)
|
||||||
wrestlersWithSecondMostPoints.each do |wr|
|
wrestlersWithSecondMostPoints.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Points Scored"
|
wr.pool_placement_tiebreaker = "Points Scored"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -135,7 +138,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersWithFastestPin.first)
|
addPointsToWrestlersAhead(wrestlersWithFastestPin.first)
|
||||||
wrestlersWithFastestPin.each do |wr|
|
wrestlersWithFastestPin.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Pin Time"
|
wr.pool_placement_tiebreaker = "Pin Time"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -151,7 +153,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersSortedByTeamPoints.first)
|
addPointsToWrestlersAhead(wrestlersSortedByTeamPoints.first)
|
||||||
wrestlersSortedByTeamPoints.each do |wr|
|
wrestlersSortedByTeamPoints.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Team Points"
|
wr.pool_placement_tiebreaker = "Team Points"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -166,7 +167,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersSortedByFallWins.first)
|
addPointsToWrestlersAhead(wrestlersSortedByFallWins.first)
|
||||||
wrestlersSortedByFallWins.each do |wr|
|
wrestlersSortedByFallWins.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Most Pins"
|
wr.pool_placement_tiebreaker = "Most Pins"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -181,7 +181,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersSortedByTechWins.first)
|
addPointsToWrestlersAhead(wrestlersSortedByTechWins.first)
|
||||||
wrestlersSortedByTechWins.each do |wr|
|
wrestlersSortedByTechWins.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Most Techs"
|
wr.pool_placement_tiebreaker = "Most Techs"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -196,7 +195,6 @@ class PoolOrder
|
|||||||
addPointsToWrestlersAhead(wrestlersSortedByMajorWins.first)
|
addPointsToWrestlersAhead(wrestlersSortedByMajorWins.first)
|
||||||
wrestlersSortedByMajorWins.each do |wr|
|
wrestlersSortedByMajorWins.each do |wr|
|
||||||
wr.pool_placement_tiebreaker = "Most Majors"
|
wr.pool_placement_tiebreaker = "Most Majors"
|
||||||
wr.save
|
|
||||||
addPoints(wr)
|
addPoints(wr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -204,7 +202,6 @@ class PoolOrder
|
|||||||
def coinFlip
|
def coinFlip
|
||||||
wrestler = wrestlersWithSamePoints.sample
|
wrestler = wrestlersWithSamePoints.sample
|
||||||
wrestler.pool_placement_tiebreaker = "Coin Flip"
|
wrestler.pool_placement_tiebreaker = "Coin Flip"
|
||||||
wrestler.save
|
|
||||||
addPointsToWrestlersAhead(wrestler)
|
addPointsToWrestlersAhead(wrestler)
|
||||||
addPoints(wrestler)
|
addPoints(wrestler)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -63,6 +63,24 @@ class PoolAdvancementTest < ActionDispatch::IntegrationTest
|
|||||||
end_match(match_wrestler_vs("Test5","Test6"),"Test5")
|
end_match(match_wrestler_vs("Test5","Test6"),"Test5")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def finishWithTieMostTeamPointsSecondPlace
|
||||||
|
end_match(match_wrestler_vs("Test1","Test2"),"Test1")
|
||||||
|
end_match(match_wrestler_vs("Test1","Test3"),"Test1")
|
||||||
|
end_match(match_wrestler_vs("Test1","Test4"),"Test1")
|
||||||
|
end_match(match_wrestler_vs("Test1","Test5"),"Test1")
|
||||||
|
end_match(match_wrestler_vs("Test1","Test6"),"Test1")
|
||||||
|
end_match_with_pin(match_wrestler_vs("Test2","Test3"),"Test2")
|
||||||
|
end_match(match_wrestler_vs("Test2","Test4"),"Test4")
|
||||||
|
end_match(match_wrestler_vs("Test2","Test5"),"Test2")
|
||||||
|
end_match(match_wrestler_vs("Test2","Test6"),"Test2")
|
||||||
|
end_match(match_wrestler_vs("Test3","Test4"),"Test3")
|
||||||
|
end_match(match_wrestler_vs("Test3","Test5"),"Test3")
|
||||||
|
end_match(match_wrestler_vs("Test3","Test6"),"Test3")
|
||||||
|
end_match(match_wrestler_vs("Test4","Test5"),"Test4")
|
||||||
|
end_match(match_wrestler_vs("Test4","Test6"),"Test4")
|
||||||
|
end_match(match_wrestler_vs("Test5","Test6"),"Test5")
|
||||||
|
end
|
||||||
|
|
||||||
def finishWithTieMostTeamPointsTwoWayTie
|
def finishWithTieMostTeamPointsTwoWayTie
|
||||||
end_match_with_pin(match_wrestler_vs("Test1","Test2"),"Test1")
|
end_match_with_pin(match_wrestler_vs("Test1","Test2"),"Test1")
|
||||||
end_match_with_pin(match_wrestler_vs("Test1","Test3"),"Test3")
|
end_match_with_pin(match_wrestler_vs("Test1","Test3"),"Test3")
|
||||||
@@ -273,6 +291,20 @@ class PoolAdvancementTest < ActionDispatch::IntegrationTest
|
|||||||
assert Wrestler.find(translate_name_to_id("Test6")).pool_placement = 6
|
assert Wrestler.find(translate_name_to_id("Test6")).pool_placement = 6
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "Pool order three way tie with most team points where first place won by wins" do
|
||||||
|
finishWithTieMostTeamPointsSecondPlace
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement = 1
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement_tiebreaker = ""
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test2")).pool_placement = 2
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test2")).pool_placement_tiebreaker = "Team Points"
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test3")).pool_placement = 3
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test3")).pool_placement_tiebreaker = "Head to Head"
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test4")).pool_placement = 4
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test4")).pool_placement_tiebreaker = ""
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test5")).pool_placement = 5
|
||||||
|
assert Wrestler.find(translate_name_to_id("Test6")).pool_placement = 6
|
||||||
|
end
|
||||||
|
|
||||||
test "Pool order three way tie with most team points but most team points are tied between two wrestlers" do
|
test "Pool order three way tie with most team points but most team points are tied between two wrestlers" do
|
||||||
finishWithTieMostTeamPointsTwoWayTie
|
finishWithTieMostTeamPointsTwoWayTie
|
||||||
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement = 2
|
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement = 2
|
||||||
|
|||||||
Reference in New Issue
Block a user