Add test cases for tie-breaking
This commit is contained in:
parent
4845ebe52f
commit
c9d714bf25
|
@ -6,6 +6,15 @@ version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "assert_cmd"
|
name = "assert_cmd"
|
||||||
version = "1.0.5"
|
version = "1.0.5"
|
||||||
|
@ -222,6 +231,15 @@ dependencies = [
|
||||||
"miniz_oxide",
|
"miniz_oxide",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "float-cmp"
|
||||||
|
version = "0.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "generic-array"
|
name = "generic-array"
|
||||||
version = "0.14.4"
|
version = "0.14.4"
|
||||||
|
@ -363,6 +381,12 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "normalize-line-endings"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-bigint"
|
name = "num-bigint"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
@ -429,6 +453,7 @@ dependencies = [
|
||||||
"num-rational",
|
"num-rational",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"paste",
|
"paste",
|
||||||
|
"predicates",
|
||||||
"rug",
|
"rug",
|
||||||
"sha2",
|
"sha2",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
|
@ -454,7 +479,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f49cfaf7fdaa3bfacc6fa3e7054e65148878354a5cfddcf661df4c851f8021df"
|
checksum = "f49cfaf7fdaa3bfacc6fa3e7054e65148878354a5cfddcf661df4c851f8021df"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"difference",
|
"difference",
|
||||||
|
"float-cmp",
|
||||||
|
"normalize-line-endings",
|
||||||
"predicates-core",
|
"predicates-core",
|
||||||
|
"regex",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -536,6 +564,17 @@ version = "0.6.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
|
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.5.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-automata"
|
name = "regex-automata"
|
||||||
version = "0.1.9"
|
version = "0.1.9"
|
||||||
|
@ -545,6 +584,12 @@ dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.6.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rug"
|
name = "rug"
|
||||||
version = "1.12.0"
|
version = "1.12.0"
|
||||||
|
|
|
@ -12,6 +12,7 @@ derive_more = "0.99.14"
|
||||||
git-version = "0.3.4"
|
git-version = "0.3.4"
|
||||||
ibig = "0.3.2"
|
ibig = "0.3.2"
|
||||||
itertools = "0.10.1"
|
itertools = "0.10.1"
|
||||||
|
predicates = "1.0.8"
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
sha2 = "0.9.5"
|
sha2 = "0.9.5"
|
||||||
wasm-bindgen = "0.2.74"
|
wasm-bindgen = "0.2.74"
|
||||||
|
|
39
tests/cli.rs
39
tests/cli.rs
|
@ -15,9 +15,8 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use assert_cmd::prelude::*;
|
use assert_cmd::Command;
|
||||||
|
use predicates::prelude::*;
|
||||||
use std::process::Command;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cli_ers97() {
|
fn cli_ers97() {
|
||||||
|
@ -25,3 +24,37 @@ fn cli_ers97() {
|
||||||
.args(&["stv", "tests/data/ers97.blt", "--numbers", "fixed", "--decimals", "5", "--round-tvs", "2", "--round-weights", "2", "--round-votes", "2", "--round-quota", "2", "--quota", "droop_exact", "--quota-mode", "ers97", "--surplus", "eg", "--transferable-only", "--exclusion", "by_value"])
|
.args(&["stv", "tests/data/ers97.blt", "--numbers", "fixed", "--decimals", "5", "--round-tvs", "2", "--round-weights", "2", "--round-votes", "2", "--round-quota", "2", "--quota", "droop_exact", "--quota-mode", "ers97", "--surplus", "eg", "--transferable-only", "--exclusion", "by_value"])
|
||||||
.assert().success();
|
.assert().success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cli_meekm_wigm_ties_prompt() {
|
||||||
|
Command::cargo_bin("opentally").expect("Cargo Error")
|
||||||
|
.args(&["stv", "tests/data/meekm.blt", "--ties", "prompt"])
|
||||||
|
.write_stdin("1")
|
||||||
|
.assert().stdout(predicate::str::contains("Charlotte is excluded"));
|
||||||
|
|
||||||
|
Command::cargo_bin("opentally").expect("Cargo Error")
|
||||||
|
.args(&["stv", "tests/data/meekm.blt", "--ties", "prompt"])
|
||||||
|
.write_stdin("2")
|
||||||
|
.assert().stdout(predicate::str::contains("Donald is excluded"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cli_meekm_wigm_ties_forwards() {
|
||||||
|
Command::cargo_bin("opentally").expect("Cargo Error")
|
||||||
|
.args(&["stv", "tests/data/meekm.blt", "--ties", "forwards", "prompt"])
|
||||||
|
.assert().stdout(predicate::str::contains("Charlotte is excluded"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cli_meekm_wigm_ties_backwards() {
|
||||||
|
Command::cargo_bin("opentally").expect("Cargo Error")
|
||||||
|
.args(&["stv", "tests/data/meekm.blt", "--ties", "backwards", "prompt"])
|
||||||
|
.assert().stdout(predicate::str::contains("Charlotte is excluded"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cli_meekm_wigm_ties_random() {
|
||||||
|
Command::cargo_bin("opentally").expect("Cargo Error")
|
||||||
|
.args(&["stv", "tests/data/meekm.blt", "--ties", "random", "--random-seed", "foo"])
|
||||||
|
.assert().stdout(predicate::str::contains("Donald is excluded"));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
4 2
|
||||||
|
-2
|
||||||
|
3 1 3 4 0
|
||||||
|
4 1 3 2 0
|
||||||
|
2 4 1 3 0
|
||||||
|
1 2 0
|
||||||
|
2 2 4 3 1 0
|
||||||
|
1 3 4 2 0
|
||||||
|
0
|
||||||
|
"Adam"
|
||||||
|
"Basil"
|
||||||
|
"Charlotte"
|
||||||
|
"Donald"
|
||||||
|
"Title"
|
Loading…
Reference in New Issue