def test_eliminate(self, ballots): amy = Candidate("Amy") kamala = Candidate("Kamala") elizabeth = Candidate("Elizabeth") schedule = PreferenceSchedule(ballots, candidates={amy, kamala, elizabeth}) schedule.eliminate(elizabeth) for candidate in schedule.candidates: for ballot, weight in candidate.votes: assert str(elizabeth) not in ballot
def test_from_ballotS(self): schedule = PreferenceSchedule.from_ballots( [ ("Kamala", "Elizabeth", "Amy"), ("Kirsten", "Elizabeth"), ("Kamala", "Elizabeth", "Amy"), ("Amy", "Elizabeth", "Kirsten"), ] ) assert schedule is not None
def test_can_normalize_a_dataframe(self): df = pandas.DataFrame( { "first": [None, "Amy", "Amy", "Kamala"], "second": ["Elizabeth", "Elizabeth", "Amy", "Amy"], "third": ["Kamala", "Kamala", "Elizabeth", "Elizabeth"], } ) schedule = PreferenceSchedule.from_dataframe(df) assert set(schedule) == { (("Elizabeth", "Kamala"), 1), (("Amy", "Elizabeth", "Kamala"), 1), (("Amy", "Elizabeth"), 1), (("Kamala", "Amy", "Elizabeth"), 1), }
def run_stv(dataframe): schedule = PreferenceSchedule.from_dataframe(dataframe) stv = FractionalSTV(schedule, seats=3) return stv.elect()
def test_create_from_dataframe(self, dataframe): schedule = PreferenceSchedule.from_dataframe(dataframe) assert schedule
def run_stv(dataframe): assert len(dataframe.columns) == 3 schedule = PreferenceSchedule.from_dataframe(dataframe) stv = FractionalSTV(schedule, seats=3) return stv.elect()