diff --git a/DigiTallyTests/AcceptanceTests.cs b/DigiTallyTests/AcceptanceTests.cs index fb8f134..a7f0f9a 100644 --- a/DigiTallyTests/AcceptanceTests.cs +++ b/DigiTallyTests/AcceptanceTests.cs @@ -145,10 +145,10 @@ public void EndToEnd() Election1 --------- -1. Dagobert Duck (4 points) -2. Mickey Mouse (3 points) - Donald Duck (2 points) - Daisy Duck (0 points) +1. Dagobert Duck (4 points, 66%) +2. Mickey Mouse (3 points, 50%) + Donald Duck (2 points, 33%) + Daisy Duck (0 points, 0%) (3 ballots, thereof 0 invalid) (max 6 points per candidate) (max 9 points total, sum 9 points, 0 unallocated) diff --git a/DigiTallyTests/ReadBallotsTests.cs b/DigiTallyTests/ReadBallotsTests.cs index bbca729..c80eeb0 100644 --- a/DigiTallyTests/ReadBallotsTests.cs +++ b/DigiTallyTests/ReadBallotsTests.cs @@ -233,7 +233,7 @@ public void GetResultString_Valid_OnlyOneNominee() Assert.That(election1.Key.Invalid, Is.EqualTo(0)); Assert.That(sut.GetResultString(), Is.EqualTo($@"Election -------- -1. Mickey Mouse (1 points) +1. Mickey Mouse (1 points, 50%) (1 ballots, thereof 0 invalid) (max 2 points per candidate) (max 3 points total, sum 1 points, 2 unallocated) diff --git a/DigiTallyTests/ReadBallotsTests_Weighted.cs b/DigiTallyTests/ReadBallotsTests_Weighted.cs index 1e2763d..576214f 100644 --- a/DigiTallyTests/ReadBallotsTests_Weighted.cs +++ b/DigiTallyTests/ReadBallotsTests_Weighted.cs @@ -291,10 +291,10 @@ public void GetResultString() Assert.That(sut.AddBallot(ballotFileName), Is.True); Assert.That(sut.GetResultString(), Is.EqualTo($@"Election -------- -1. Dagobert Duck (2 points) -2. Mickey Mouse (1 points) - Daisy Duck (0 points) - Donald Duck (0 points) +1. Dagobert Duck (2 points, 100%) +2. Mickey Mouse (1 points, 50%) + Daisy Duck (0 points, 0%) + Donald Duck (0 points, 0%) (1 ballots, thereof 0 invalid) (max 2 points per candidate) (max 3 points total, sum 3 points, 0 unallocated) @@ -341,10 +341,10 @@ public void GetResultString_SameVotes() Assert.That(sut.AddBallot(ballotFileName2), Is.True); Assert.That(sut.GetResultString(), Is.EqualTo($@"Election -------- -1. Dagobert Duck (3 points) -1. Mickey Mouse (3 points) - Daisy Duck (0 points) - Donald Duck (0 points) +1. Dagobert Duck (3 points, 75%) +1. Mickey Mouse (3 points, 75%) + Daisy Duck (0 points, 0%) + Donald Duck (0 points, 0%) (2 ballots, thereof 0 invalid) (max 4 points per candidate) (max 6 points total, sum 6 points, 0 unallocated) @@ -375,10 +375,10 @@ public void GetResultString_Abstains() Assert.That(sut.AddBallot(ballotFileName), Is.True); Assert.That(sut.GetResultString(), Is.EqualTo($@"Election -------- - Dagobert Duck (0 points) - Daisy Duck (0 points) - Donald Duck (0 points) - Mickey Mouse (0 points) + Dagobert Duck (0 points, 0%) + Daisy Duck (0 points, 0%) + Donald Duck (0 points, 0%) + Mickey Mouse (0 points, 0%) (1 ballots, thereof 0 invalid) (max 2 points per candidate) (max 3 points total, sum 0 points, 3 unallocated) diff --git a/DigitaleBriefwahl/Model/WeightedElectionModel.cs b/DigitaleBriefwahl/Model/WeightedElectionModel.cs index f939fd1..d456ca4 100644 --- a/DigitaleBriefwahl/Model/WeightedElectionModel.cs +++ b/DigitaleBriefwahl/Model/WeightedElectionModel.cs @@ -216,7 +216,8 @@ public override string GetResultString(Dictionary resul var rank = GetRank(orderedResults, candidate); var placing = rank <= Votes ? $"{rank}." : " "; - bldr.AppendLine($"{placing} {candidate} ({weightedResult.Points} points)"); + bldr.AppendLine($"{placing} {candidate} ({weightedResult.Points} points, " + + $"{weightedResult.Points * 100 / MaxPointsPerCandidate}%)"); SumTotalPoints += weightedResult.Points; } @@ -224,6 +225,8 @@ public override string GetResultString(Dictionary resul return bldr.ToString(); } + private int MaxPointsPerCandidate => (BallotsProcessed - Invalid) * Votes; + private int MaxTotalPoints { get @@ -243,7 +246,7 @@ protected override string GetResultStringSummary(Dictionary