]> projects.mako.cc - rubyvote/blobdiff - test/irv_test.rb
Fix problem with a [nil] result being taken as having a winner; add testcases
[rubyvote] / test / irv_test.rb
index 640824c42e5f6ac431b2a0f050624e0bcc5c6944..d3a57a7c7d8cec68e31a4c85cf0ba89c675cea2b 100644 (file)
@@ -1,11 +1,17 @@
-#!/usr/bin/ruby
+#!/usr/bin/ruby -Ilib
 
 require 'test/unit'
-require 'election_test_helper'
+require 'rubyvote/election'
+require 'rubyvote/irv'
 
 class TestRunoffVote < Test::Unit::TestCase
-  include ElectionTestHelper
 
+  def test_irv_empty
+    vote_array = Array.new
+    assert_nil InstantRunoffVote.new(vote_array).result.winners[0]
+    assert_equal(false, InstantRunoffVote.new(vote_array).result.winner?)
+  end
+  
   def test_irv
     vote_array = Array.new
     142.times {vote_array << "ABCD".split("")}
@@ -13,7 +19,7 @@ class TestRunoffVote < Test::Unit::TestCase
     15.times {vote_array << "CDBA".split("")}
     17.times {vote_array << "DCBA".split("")}
 
-    test_winner( "A", InstantRunoffVote.new(vote_array).result )
+    assert_equal( "A", InstantRunoffVote.new(vote_array).result.winners[0] )
   end
 
   def test_irv2
@@ -23,7 +29,7 @@ class TestRunoffVote < Test::Unit::TestCase
     15.times {vote_array << "CDBA".split("")}
     17.times {vote_array << "DCBA".split("")}
 
-    test_winner( "D", InstantRunoffVote.new(vote_array).result )
+    assert_equal( "D", InstantRunoffVote.new(vote_array).result.winners[0] )
   end
 
   def test_irv3
@@ -48,9 +54,15 @@ class TestRunoffVote < Test::Unit::TestCase
     39.times {vote_array << "DCAB".split("")}
     12.times {vote_array << "DCBA".split("")}
 
-    test_winner( "C", InstantRunoffVote.new(vote_array).result )
+    assert_equal( "C", InstantRunoffVote.new(vote_array).result.winners[0] )
   end
-
+  
+  def test_irv_logic_empty
+    vote_array = Array.new
+    assert_nil InstantRunoffLogicVote.new(vote_array).result.winners[0]
+    assert_equal(false, InstantRunoffLogicVote.new(vote_array).result.winner?)
+  end
+  
   def test_irv_logic1
     vote_array = Array.new
     42.times {vote_array << "ABCD".split("")}
@@ -58,7 +70,7 @@ class TestRunoffVote < Test::Unit::TestCase
     15.times {vote_array << "CDBA".split("")}
     15.times {vote_array << "DCBA".split("")}
 
-    test_winner ( "B", InstantRunoffLogicVote.new(vote_array).result )
+    assert_equal( "B", InstantRunoffLogicVote.new(vote_array).result.winners[0] )
   end
   ###TODO: test all the other variants
 end

Benjamin Mako Hill || Want to submit a patch?