projects
/
rubyvote
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Entire election aborts with InvalidVoteError when an invalid vote object is passed in.
[rubyvote]
/
lib
/
rubyvote
/
election.rb
diff --git
a/lib/rubyvote/election.rb
b/lib/rubyvote/election.rb
index 4499233ebb0bda4e0f305c6a853bbbf7c96ed454..b9bb5574c7ea03b4d9d5d6e1b544fdca640e3ee3 100644
(file)
--- 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|
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
@@
-63,12
+67,7
@@
class ElectionVote
end
def filter_out(winner)
end
def filter_out(winner)
- if winner.winners[0].class == Array
- to_filter = winner.winners[0]
- else
- to_filter = [winner.winners[0]]
- end
- @candidates.delete_if {|x| to_filter.include?(x)}
+ @candidates.delete_if {|x| winner.winners.include?(x)}
end
end
end
end
@@
-80,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)
@@
-119,7
+118,6
@@
end
class ElectionResult
attr_reader :winners
class ElectionResult
attr_reader :winners
- attr_accessor :full_results
def initialize(voteobj=nil)
unless voteobj and voteobj.kind_of?( ElectionVote )
def initialize(voteobj=nil)
unless voteobj and voteobj.kind_of?( ElectionVote )
@@
-128,7
+126,6
@@
class ElectionResult
@election = voteobj
@winners = Array.new
@election = voteobj
@winners = Array.new
- @full_results = Array.new
end
def winner
end
def winner
@@
-139,10
+136,6
@@
class ElectionResult
@winners.length > 0
end
@winners.length > 0
end
- def get_full_results
- @full_results.collect {|x| x.winners}
- end
-
end
class PluralityResult < ElectionResult
end
class PluralityResult < ElectionResult
@@
-174,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?