Added tie-breaking rules and multicandidate elimination of weak candidates
[rubyvote] / test.rb
diff --git a/test.rb b/test.rb
index 3be4176f29fc63a256af80588e24c78d1a4b5d30..6b0b5c1cda8950a19fce2a1cecd3e3795a861f94 100755 (executable)
--- a/test.rb
+++ b/test.rb
@@ -18,9 +18,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 
-require 'election'
-require 'condorcet'
-require 'positional'
+require 'lib/rubyvote'
 
 def print_winner(result)
   if not result.winner?
@@ -128,6 +126,86 @@ def approval_test1
   print_winner( ApprovalVote.new(vote_array).result )
 end
 
+def irv_test1
+  puts "USING IRV..."
+  puts "The winner shold be: A"
+
+  vote_array = Array.new
+  142.times {vote_array << "ABCD".split("")}
+  26.times {vote_array << "BCDA".split("")}
+  15.times {vote_array << "CDBA".split("")}
+  17.times {vote_array << "DCBA".split("")}
+
+  print_winner( InstantRunoffVote.new(vote_array).result )
+end
+
+def irv_test2
+  puts "USING IRV..."
+  puts "The winner shold be: D"
+
+  vote_array = Array.new
+  42.times {vote_array << "ABCD".split("")}
+  26.times {vote_array << "BCDA".split("")}
+  15.times {vote_array << "CDBA".split("")}
+  17.times {vote_array << "DCBA".split("")}
+
+  print_winner( InstantRunoffVote.new(vote_array).result )
+end
+
+def irv_test3
+  puts "USING IRV..."
+  puts "The winner shold be: C"
+
+  vote_array = Array.new
+  42.times {vote_array << "ABCD".split("")}
+  26.times {vote_array << "ACBD".split("")}
+  15.times {vote_array << "BACD".split("")}
+  32.times {vote_array << "BCAD".split("")}
+  14.times {vote_array << "CABD".split("")}
+  49.times {vote_array << "CBAD".split("")}
+  17.times {vote_array << "ABDC".split("")}
+  23.times {vote_array << "BADC".split("")}
+  37.times {vote_array << "BCDA".split("")}
+  11.times {vote_array << "CADB".split("")}
+  16.times {vote_array << "CBDA".split("")}
+  54.times {vote_array << "ADBC".split("")}
+  36.times {vote_array << "BDCA".split("")}
+  42.times {vote_array << "CDAB".split("")}
+  13.times {vote_array << "CDBA".split("")}
+  51.times {vote_array << "DABC".split("")}
+  33.times {vote_array << "DBCA".split("")}
+  39.times {vote_array << "DCAB".split("")}
+  12.times {vote_array << "DCBA".split("")}
+
+  print_winner( InstantRunoffVote.new(vote_array).result )
+end
+
+def irvlogic_test1
+  puts "USING IRV LOGIC..."
+  puts "The winner shold be: B"
+
+  vote_array = Array.new
+  42.times {vote_array << "ABCD".split("")}
+  26.times {vote_array << "BCDA".split("")}
+  15.times {vote_array << "CDBA".split("")}
+  15.times {vote_array << "DCBA".split("")}
+
+  print_winner( InstantRunoffLogicVote.new(vote_array).result )
+end
+
+def range_test1
+  puts "USING RANGE..."
+  puts "The winner shold be: B"
+
+  vote_array = Array.new
+  42.times {vote_array << {:A => 10, :B => 5, :C => 2, :D => 1}}
+  26.times {vote_array << {:A => 1, :B => 10, :C => 5, :D => 2}}
+  15.times {vote_array << {:A => 1, :B => 2, :C => 10, :D => 5}}
+  17.times {vote_array << {:A => 1, :B => 2, :C => 5, :D => 10}}
+
+  print_winner( RangeVote.new(vote_array).result )
+end
+
 condorcet_test1()
 ssd_test1()
 ssd_test2()
@@ -135,4 +213,8 @@ ssd_test3()
 borda_test1()
 plurality_test1()
 approval_test1()
-
+irv_test1()
+irv_test2()
+irv_test3()
+irvlogic_test1()
+range_test1()

Benjamin Mako Hill || Want to submit a patch?