From 254fd48da81d8e3b0938c38db89b9cd2fd6a98fe Mon Sep 17 00:00:00 2001 From: Benjamin Mako Hill Date: Thu, 16 Aug 2007 23:54:08 +0000 Subject: [PATCH] Helped fix the bug in def defeats that was causing cpssd() to return [nil] as a winner list for empty elections. git-svn-id: svn://rubyforge.org/var/svn/rubyvote/trunk@42 1440c7f4-e209-0410-9a04-881b5eb134a8 --- lib/rubyvote/condorcet.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/rubyvote/condorcet.rb b/lib/rubyvote/condorcet.rb index 08fd2df..2c5e03a 100644 --- a/lib/rubyvote/condorcet.rb +++ b/lib/rubyvote/condorcet.rb @@ -178,11 +178,12 @@ class CondorcetResult < ElectionResult protected def defeats(candidates=nil, votes=nil) - candidates = @election.candidates unless candidates - votes = @election.votes unless votes + candidates ||= @election.candidates || [] + # we're assumign that if there are candidates, there must be at + # least one vote for them + votes ||= @election.votes defeats = Array.new - candidates = [candidates] unless candidates.class == Array candidates.each do |candidate| candidates.each do |challenger| next if candidate == challenger @@ -242,14 +243,13 @@ class CloneproofSSDResult < CondorcetResult def initialize(voteobj=nil) super(voteobj) @winners = self.cpssd() - @winners.delete nil end protected def cpssd votes = @election.votes - candidates = *@election.candidates + candidates = @election.candidates.dup def in_schwartz_set?(candidate, candidates, transitive_defeats) candidates.each do |challenger| -- 2.30.2