예제 #1
0
    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
예제 #2
0
 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
예제 #3
0
 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),
     }
예제 #4
0
def run_stv(dataframe):
    schedule = PreferenceSchedule.from_dataframe(dataframe)
    stv = FractionalSTV(schedule, seats=3)
    return stv.elect()
예제 #5
0
 def test_create_from_dataframe(self, dataframe):
     schedule = PreferenceSchedule.from_dataframe(dataframe)
     assert schedule
예제 #6
0
def run_stv(dataframe):
    assert len(dataframe.columns) == 3
    schedule = PreferenceSchedule.from_dataframe(dataframe)
    stv = FractionalSTV(schedule, seats=3)
    return stv.elect()