]> projects.mako.cc - selectricity/blobdiff - lib/rubyvote/election.rb
Pull in svn Rubyvote again
[selectricity] / lib / rubyvote / election.rb
index 3d816a89212e572a2c2165a2180908ab20fc7198..42f18bb6c9fa7470e34c46051787573b377fdce2 100644 (file)
@@ -42,7 +42,11 @@ class ElectionVote
     if votes
       if votes.instance_of?( Array )
         votes.each do |vote|
     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
         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)
   
   protected
   def verify_vote(vote=nil)
-    vote.instance_of?( String )
+    vote ? true : false
   end
 
   def tally_vote(candidate)
   end
 
   def tally_vote(candidate)
@@ -129,7 +133,7 @@ class ElectionResult
   end
 
   def winner?
   end
 
   def winner?
-    @winners.length > 0
+    @winners.length > 0 and not @winners[0].nil?
   end
 
 end
   end
 
 end
@@ -163,3 +167,10 @@ end
 class ElectionError < ArgumentError
 end
 
 class ElectionError < ArgumentError
 end
 
+class InvalidVoteError < ElectionError
+  attr_accessor :voteobj
+  def initialize(msg=nil, voteobj=nil)
+    super(msg)
+    @voteobj=voteobj
+  end
+end

Benjamin Mako Hill || Want to submit a patch?