diff --git a/tests/data/grey_fitzgerald.blt b/tests/data/grey_fitzgerald.blt new file mode 100644 index 0000000..a642558 --- /dev/null +++ b/tests/data/grey_fitzgerald.blt @@ -0,0 +1,46 @@ +# Comment: Ballot papers derived from the Grey-Fitzgerald (1955) model election - all votes - Dail-like rules +# Source: RunasSudo +# Contributor: RunasSudo +11 6 +5 1 7 3 +27 2 4 +2 2 4 1 +2 2 4 5 +43 2 4 9 +5 2 4 10 +1 2 4 0 +2 2 5 +25 2 9 +10 2 10 +4 2 10 3 +4 2 10 9 3 +3 2 10 9 11 +8 2 10 9 0 +4 2 0 +25 3 +10 4 +1 5 7 3 +3 5 9 +1 5 10 11 +50 6 0 # ?? +9 6 11 +2 6 3 +1 6 1 7 3 +12 7 11 +2 7 +50 8 +13 9 +24 11 +0 +"A" # 1 +"B" # 2 +"C" # 3 +"D" # 4 +"E" # 5 +"F" # 6 +"G" # 7 +"H" # 8 +"J" # 9 +"K" # 10 +"L" # 11 +"Grey–Fitzgerald Example" diff --git a/tests/data/grey_fitzgerald.csv b/tests/data/grey_fitzgerald.csv new file mode 100644 index 0000000..eee7da0 --- /dev/null +++ b/tests/data/grey_fitzgerald.csv @@ -0,0 +1,14 @@ +Stage:,1,,2,,3,,4,,5,,6,,7,,8, +Comment:,First preferences,,Surplus of B,,Surplus of D,,Surplus of F,,"Exclusion of A, E",,Exclusion of K,,Exclusion of G,,Surplus of J, +A,5,H,5,H,5,H,6,H,0,EX,0,EX,0,EX,0,EX +B,140,EL,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL +C,25,H,25,H,25,H,27,H,27,H,31,H,38,H,42,H +D,10,H,63,EL,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL +E,5,H,6,H,7,H,7,H,0,EX,0,EX,0,EX,0,EX +F,62,EL,62,EL,62,EL,50,EL,50,EL,50,EL,50,EL,50,EL +G,14,H,14,H,14,H,14,H,21,H,21,H,0,EX,0,EX +H,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL,50,EL +J,13,H,30,H,41,H,41,H,44,H,59,EL,59,EL,50,EL +K,0,H,19,H,20,H,20,H,21,H,0,EX,0,EX,0,EX +L,24,H,24,H,24,H,33,H,33,H,34,H,46,H,49,EL +Non-transferable,0,,0,,0,,0,,2,,3,,5,,7, diff --git a/tests/data/grey_fitzgerald.ods b/tests/data/grey_fitzgerald.ods new file mode 100644 index 0000000..afc3c3b Binary files /dev/null and b/tests/data/grey_fitzgerald.ods differ diff --git a/tests/tests_impl/dail.rs b/tests/tests_impl/dail.rs index 4aad626..901d3e2 100644 --- a/tests/tests_impl/dail.rs +++ b/tests/tests_impl/dail.rs @@ -19,6 +19,7 @@ use crate::utils; use opentally::numbers::Rational; use opentally::stv; +use opentally::ties::TieStrategy; #[test] fn dublin_north_2002_rational() { @@ -36,3 +37,22 @@ fn dublin_north_2002_rational() { utils::read_validate_election::("tests/data/DublinNorthSorted.csv", "tests/data/DublinNorthSorted.blt", stv_opts, None, &["exhausted"]); } + +#[test] +fn grey_fitzgerald_rational() { + let stv_opts = stv::STVOptionsBuilder::default() + .round_quota(Some(0)) + .normalise_ballots(true) + .quota_criterion(stv::QuotaCriterion::GreaterOrEqual) + .ties(vec![TieStrategy::Forwards]) + .surplus(stv::SurplusMethod::Hare) + .surplus_order(stv::SurplusOrder::BySize) // Differs to Dail + .transferable_only(true) + .bulk_exclude(true) + .defer_surpluses(true) + .build().unwrap(); + + assert_eq!(stv_opts.describe::(), "--round-quota 0 --normalise-ballots --quota-criterion geq --ties forwards --surplus hare --transferable-only --bulk-exclude --defer-surpluses"); + + utils::read_validate_election::("tests/data/grey_fitzgerald.csv", "tests/data/grey_fitzgerald.blt", stv_opts, None, &["exhausted"]); +}