From 886da4d0dc54fabee70bf4e7aea4d2988f7cf83d Mon Sep 17 00:00:00 2001 From: John Dong Date: Wed, 15 Aug 2007 12:00:58 -0400 Subject: [PATCH] Import latest subversion RubyVote. --- lib/rubyvote/election.rb | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/rubyvote/election.rb b/lib/rubyvote/election.rb index 66e4c2a..b9bb557 100644 --- a/lib/rubyvote/election.rb +++ b/lib/rubyvote/election.rb @@ -34,7 +34,7 @@ class ElectionVote attr_reader :votes attr_reader :candidates - + def initialize(votes=nil) @votes = Hash.new unless defined?(@votes) @candidates = Array.new unless defined?(@candidates) @@ -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) - not vote.instance_of?( Array ) + vote ? true : false end def tally_vote(candidate) @@ -114,8 +118,7 @@ end class ElectionResult attr_reader :winners - attr_reader :election - + def initialize(voteobj=nil) unless voteobj and voteobj.kind_of?( ElectionVote ) raise ArgumentError, "You must pass a ElectionVote array.", caller @@ -164,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 -- 2.30.2