From ebdfe0cd89442ce3dd9e1d87a693fdc0469ffcad Mon Sep 17 00:00:00 2001 From: Louis Eisenberg Date: Wed, 25 Mar 2020 23:20:57 -0700 Subject: [PATCH] UWI test (#440) * add UWI test files * add an additional test to validate my fix of #397 * use a better name for the first test --- .../multi_seat_uwi_test_config.json | 54 ++++++++++++++ .../multi_seat_uwi_test_cvr.xlsx | Bin 0 -> 4977 bytes .../multi_seat_uwi_test_expected_summary.json | 66 ++++++++++++++++++ .../uwi_cannot_win_test_config.json | 50 +++++++++++++ .../uwi_cannot_win_test_cvr.xlsx | Bin 0 -> 4846 bytes .../uwi_cannot_win_test_expected_summary.json | 33 +++++++++ 6 files changed, 203 insertions(+) create mode 100644 multi_seat_uwi_test/multi_seat_uwi_test_config.json create mode 100644 multi_seat_uwi_test/multi_seat_uwi_test_cvr.xlsx create mode 100644 multi_seat_uwi_test/multi_seat_uwi_test_expected_summary.json create mode 100644 uwi_cannot_win_test/uwi_cannot_win_test_config.json create mode 100644 uwi_cannot_win_test/uwi_cannot_win_test_cvr.xlsx create mode 100644 uwi_cannot_win_test/uwi_cannot_win_test_expected_summary.json diff --git a/multi_seat_uwi_test/multi_seat_uwi_test_config.json b/multi_seat_uwi_test/multi_seat_uwi_test_config.json new file mode 100644 index 000000000..54292b08f --- /dev/null +++ b/multi_seat_uwi_test/multi_seat_uwi_test_config.json @@ -0,0 +1,54 @@ +{ + "tabulatorVersion" : "TEST", + "outputSettings" : { + "contestName" : "Multi-Seat UWI Test", + "outputDirectory" : "output", + "contestDate" : "", + "contestJurisdiction" : "", + "contestOffice" : "", + "tabulateByPrecinct" : false, + "generateCdfJson" : false + }, + "cvrFileSources" : [ { + "filePath" : "multi_seat_uwi_test_cvr.xlsx", + "firstVoteColumnIndex" : "2", + "firstVoteRowIndex" : "2", + "idColumnIndex" : "", + "precinctColumnIndex" : "", + "provider" : "" + } ], + "candidates" : [ { + "name" : "A", + "code" : "", + "excluded" : false + }, { + "name" : "B", + "code" : "", + "excluded" : false + }, { + "name" : "C", + "code" : "", + "excluded" : false + } ], + "rules" : { + "tiebreakMode" : "usePermutationInConfig", + "overvoteRule" : "exhaustImmediately", + "winnerElectionMode" : "standard", + "randomSeed" : "", + "numberOfWinners" : "2", + "multiSeatBottomsUpPercentageThreshold" : "", + "decimalPlacesForVoteArithmetic" : "4", + "minimumVoteThreshold" : "0", + "maxSkippedRanksAllowed" : "1", + "maxRankingsAllowed" : "max", + "nonIntegerWinningThreshold" : false, + "hareQuota" : false, + "batchElimination" : false, + "exhaustOnDuplicateCandidate" : false, + "treatBlankAsUndeclaredWriteIn" : false, + "overvoteLabel" : "", + "undervoteLabel" : "", + "undeclaredWriteInLabel" : "UWI", + "rulesDescription" : "" + } +} diff --git a/multi_seat_uwi_test/multi_seat_uwi_test_cvr.xlsx b/multi_seat_uwi_test/multi_seat_uwi_test_cvr.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1e1f73a4c6ff809478008c5d68cca85fd00cd438 GIT binary patch literal 4977 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 literal 0 HcmV?d00001 diff --git a/multi_seat_uwi_test/multi_seat_uwi_test_expected_summary.json b/multi_seat_uwi_test/multi_seat_uwi_test_expected_summary.json new file mode 100644 index 000000000..593c50d73 --- /dev/null +++ b/multi_seat_uwi_test/multi_seat_uwi_test_expected_summary.json @@ -0,0 +1,66 @@ +{ + "config" : { + "contest" : "Multi-Seat UWI Test", + "date" : "", + "jurisdiction" : "", + "office" : "", + "threshold" : "6" + }, + "results" : [ { + "round" : 1, + "tally" : { + "A" : "6", + "B" : "3", + "C" : "2", + "UWI" : "4" + }, + "tallyResults" : [ { + "elected" : "A", + "transfers" : { } + } ] + }, { + "round" : 2, + "tally" : { + "A" : "6.0000", + "B" : "3", + "C" : "2", + "UWI" : "4" + }, + "tallyResults" : [ { + "eliminated" : "UWI", + "transfers" : { + "exhausted" : "4" + } + } ] + }, { + "round" : 3, + "tally" : { + "A" : "6.0000", + "B" : "3", + "C" : "2" + }, + "tallyResults" : [ { + "eliminated" : "C", + "transfers" : { + "exhausted" : "2" + } + } ] + }, { + "round" : 4, + "tally" : { + "A" : "6.0000", + "B" : "3" + }, + "tallyResults" : [ { + "elected" : "B", + "transfers" : { } + } ] + }, { + "round" : 5, + "tally" : { + "A" : "6.0000", + "B" : "3.0000" + }, + "tallyResults" : [ ] + } ] +} \ No newline at end of file diff --git a/uwi_cannot_win_test/uwi_cannot_win_test_config.json b/uwi_cannot_win_test/uwi_cannot_win_test_config.json new file mode 100644 index 000000000..f664a4630 --- /dev/null +++ b/uwi_cannot_win_test/uwi_cannot_win_test_config.json @@ -0,0 +1,50 @@ +{ + "tabulatorVersion" : "TEST", + "outputSettings" : { + "contestName" : "UWI Test", + "outputDirectory" : "output", + "contestDate" : "", + "contestJurisdiction" : "", + "contestOffice" : "", + "tabulateByPrecinct" : false, + "generateCdfJson" : false + }, + "cvrFileSources" : [ { + "filePath" : "uwi_cannot_win_test_cvr.xlsx", + "firstVoteColumnIndex" : "2", + "firstVoteRowIndex" : "2", + "idColumnIndex" : "", + "precinctColumnIndex" : "", + "provider" : "" + } ], + "candidates" : [ { + "name" : "A", + "code" : "", + "excluded" : false + }, { + "name" : "B", + "code" : "", + "excluded" : false + } ], + "rules" : { + "tiebreakMode" : "usePermutationInConfig", + "overvoteRule" : "exhaustImmediately", + "winnerElectionMode" : "standard", + "randomSeed" : "", + "numberOfWinners" : "1", + "multiSeatBottomsUpPercentageThreshold" : "", + "decimalPlacesForVoteArithmetic" : "4", + "minimumVoteThreshold" : "0", + "maxSkippedRanksAllowed" : "1", + "maxRankingsAllowed" : "max", + "nonIntegerWinningThreshold" : false, + "hareQuota" : false, + "batchElimination" : false, + "exhaustOnDuplicateCandidate" : false, + "treatBlankAsUndeclaredWriteIn" : false, + "overvoteLabel" : "", + "undervoteLabel" : "", + "undeclaredWriteInLabel" : "UWI", + "rulesDescription" : "" + } +} diff --git a/uwi_cannot_win_test/uwi_cannot_win_test_cvr.xlsx b/uwi_cannot_win_test/uwi_cannot_win_test_cvr.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e3f4609a5f52e2771f7e727ddcda0ef223054fed GIT binary patch literal 4846 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