X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/04f827dd4647f3a7d6e5bd8f5e9083c730a8dccc..389db6f5756bc8a2063f4ab786ea71b4c3b53b8f:/lib/rubyvote/election.rb?ds=inline diff --git a/lib/rubyvote/election.rb b/lib/rubyvote/election.rb index fc61840..42f18bb 100644 --- a/lib/rubyvote/election.rb +++ b/lib/rubyvote/election.rb @@ -42,7 +42,11 @@ class ElectionVote if votes if votes.instance_of?( Array ) votes.each do |vote| - self.tally_vote(vote) if self.verify_vote(vote) + if self.verify_vote(vote) + self.tally_vote(vote) + else + raise InvalidVoteError.new ("Invalid vote object", vote) + end end else raise ElectionError, "Votes must be in the form of an array.", caller @@ -61,6 +65,11 @@ class ElectionVote def tally_vote self.verify_vote(vote) end + + def filter_out(winner) + @candidates.delete_if {|x| winner.winners.include?(x)} + end + end class PluralityVote < ElectionVote @@ -124,7 +133,7 @@ class ElectionResult end def winner? - @winners.length > 0 + @winners.length > 0 and not @winners[0].nil? end end @@ -158,3 +167,10 @@ end class ElectionError < ArgumentError end +class InvalidVoteError < ElectionError + attr_accessor :voteobj + def initialize(msg=nil, voteobj=nil) + super(msg) + @voteobj=voteobj + end +end