]> projects.mako.cc - rubyvote/blob - test/condorcet_test.rb
Added get_full_results method that returns a ranked list of candidates.
[rubyvote] / test / condorcet_test.rb
1 #!/usr/bin/ruby -Ilib
2
3 require 'test/unit'
4 require 'rubyvote/election'
5 require 'rubyvote/condorcet'
6
7 class TestCondorcetVote < Test::Unit::TestCase
8
9   def test_condorcet
10     vote_array = Array.new
11     3.times {vote_array << "ABC".split("")}
12     3.times {vote_array << "CBA".split("")}
13     2.times {vote_array << "BAC".split("")}
14
15     assert_equal ["B"], PureCondorcetVote.new(vote_array).result.winners[0]
16   end
17
18   def test_ssd
19     vote_array = Array.new
20     5.times {vote_array << "ACBED".split("")}
21     5.times {vote_array << "ADECB".split("")}
22     8.times {vote_array << "BEDAC".split("")}
23     3.times {vote_array << "CABED".split("")}
24     7.times {vote_array << "CAEBD".split("")}
25     2.times {vote_array << "CBADE".split("")}
26     7.times {vote_array << "DCEBA".split("")}
27     8.times {vote_array << "EBADC".split("")}
28
29     assert_equal "E", CloneproofSSDVote.new(vote_array).result.winners[0]
30     assert_equal [['E'], ['A'], ['C'], ['B'], ['D']], 
31                  CloneproofSSDVote.new(vote_array).result.get_full_results
32   end
33
34   def test_ssd2
35     vote_array = Array.new
36     5.times {vote_array << "ACBD".split("")}
37     2.times {vote_array << "ACDB".split("")}
38     3.times {vote_array << "ADCB".split("")}
39     4.times {vote_array << "BACD".split("")}
40     3.times {vote_array << "CBDA".split("")}
41     3.times {vote_array << "CDBA".split("")}
42     1.times {vote_array << "DACB".split("")}
43     5.times {vote_array << "DBAC".split("")}
44     4.times {vote_array << "DCBA".split("")}
45
46     assert_equal "D", CloneproofSSDVote.new(vote_array).result.winners[0] 
47     assert_equal [['D'], ['A'], ['C'], ['B']], 
48                  CloneproofSSDVote.new(vote_array).result.get_full_results
49   end
50
51   def test_ssd3
52     vote_array = Array.new
53     3.times {vote_array << "ABCD".split("")}
54     2.times {vote_array << "DABC".split("")}
55     2.times {vote_array << "DBCA".split("")}
56     2.times {vote_array << "CBDA".split("")}
57
58     assert_equal "B", CloneproofSSDVote.new(vote_array).result.winners[0]
59     assert_equal [['B'], ['C'], ['D'], ['A']], 
60                  CloneproofSSDVote.new(vote_array).result.get_full_results
61   end
62 end

Benjamin Mako Hill || Want to submit a patch?