X-Git-Url: https://projects.mako.cc/source/rubyvote/blobdiff_plain/cadb8cabfdcf3cb009319e36102beaf31362da89..d28df2a4166aa83fd9a0eb1f5a0599b8fc1c9798:/lib/rubyvote/election.rb diff --git a/lib/rubyvote/election.rb b/lib/rubyvote/election.rb index 4d51d78..b9bb557 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 @@ -75,7 +79,7 @@ class PluralityVote < ElectionVote protected def verify_vote(vote=nil) - vote.instance_of?( String ) + vote ? true : false end def tally_vote(candidate) @@ -114,7 +118,6 @@ end class ElectionResult attr_reader :winners - attr_accessor :full_results def initialize(voteobj=nil) unless voteobj and voteobj.kind_of?( ElectionVote ) @@ -123,7 +126,6 @@ class ElectionResult @election = voteobj @winners = Array.new - @full_results = Array.new end def winner @@ -134,10 +136,6 @@ class ElectionResult @winners.length > 0 end - def get_full_results - @full_results.collect {|x| x.winners} - end - end class PluralityResult < ElectionResult @@ -169,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