You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
5.8 KiB
145 lines
5.8 KiB
4 years ago
|
use tournament;
|
||
|
|
||
|
#[test]
|
||
|
fn just_the_header_if_no_input() {
|
||
|
let input = "";
|
||
|
let expected = "Team | MP | W | D | L | P";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn a_win_is_three_points_a_loss_is_zero_points() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 1 | 1 | 0 | 0 | 3\n"
|
||
|
+ "Blithering Badgers | 1 | 0 | 0 | 1 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn a_win_can_also_be_expressed_as_a_loss() {
|
||
|
let input = "Blithering Badgers;Allegoric Alaskans;loss";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 1 | 1 | 0 | 0 | 3\n"
|
||
|
+ "Blithering Badgers | 1 | 0 | 0 | 1 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn a_different_team_can_win() {
|
||
|
let input = "Blithering Badgers;Allegoric Alaskans;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Blithering Badgers | 1 | 1 | 0 | 0 | 3\n"
|
||
|
+ "Allegoric Alaskans | 1 | 0 | 0 | 1 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn there_can_be_more_than_one_match() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;win\n".to_string()
|
||
|
+ "Allegoric Alaskans;Blithering Badgers;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 2 | 2 | 0 | 0 | 6\n"
|
||
|
+ "Blithering Badgers | 2 | 0 | 0 | 2 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn a_draw_is_one_point_each() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;draw\n".to_string()
|
||
|
+ "Allegoric Alaskans;Blithering Badgers;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 2 | 1 | 1 | 0 | 4\n"
|
||
|
+ "Blithering Badgers | 2 | 0 | 1 | 1 | 1";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn there_can_be_more_than_one_winner() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;loss\n".to_string()
|
||
|
+ "Allegoric Alaskans;Blithering Badgers;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 2 | 1 | 0 | 1 | 3\n"
|
||
|
+ "Blithering Badgers | 2 | 1 | 0 | 1 | 3";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn there_can_be_more_than_two_teams() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;win\n".to_string()
|
||
|
+ "Blithering Badgers;Courageous Californians;win\n"
|
||
|
+ "Courageous Californians;Allegoric Alaskans;loss";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 2 | 2 | 0 | 0 | 6\n"
|
||
|
+ "Blithering Badgers | 2 | 1 | 0 | 1 | 3\n"
|
||
|
+ "Courageous Californians | 2 | 0 | 0 | 2 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn typical_input() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;win\n".to_string()
|
||
|
+ "Devastating Donkeys;Courageous Californians;draw\n"
|
||
|
+ "Devastating Donkeys;Allegoric Alaskans;win\n"
|
||
|
+ "Courageous Californians;Blithering Badgers;loss\n"
|
||
|
+ "Blithering Badgers;Devastating Donkeys;loss\n"
|
||
|
+ "Allegoric Alaskans;Courageous Californians;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Devastating Donkeys | 3 | 2 | 1 | 0 | 7\n"
|
||
|
+ "Allegoric Alaskans | 3 | 2 | 0 | 1 | 6\n"
|
||
|
+ "Blithering Badgers | 3 | 1 | 0 | 2 | 3\n"
|
||
|
+ "Courageous Californians | 3 | 0 | 1 | 2 | 1";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn incomplete_competition_not_all_pairs_have_played() {
|
||
|
let input = "Allegoric Alaskans;Blithering Badgers;loss\n".to_string()
|
||
|
+ "Devastating Donkeys;Allegoric Alaskans;loss\n"
|
||
|
+ "Courageous Californians;Blithering Badgers;draw\n"
|
||
|
+ "Allegoric Alaskans;Courageous Californians;win";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 3 | 2 | 0 | 1 | 6\n"
|
||
|
+ "Blithering Badgers | 2 | 1 | 1 | 0 | 4\n"
|
||
|
+ "Courageous Californians | 2 | 0 | 1 | 1 | 1\n"
|
||
|
+ "Devastating Donkeys | 1 | 0 | 0 | 1 | 0";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn ties_broken_alphabetically() {
|
||
|
let input = "Courageous Californians;Devastating Donkeys;win\n".to_string()
|
||
|
+ "Allegoric Alaskans;Blithering Badgers;win\n"
|
||
|
+ "Devastating Donkeys;Allegoric Alaskans;loss\n"
|
||
|
+ "Courageous Californians;Blithering Badgers;win\n"
|
||
|
+ "Blithering Badgers;Devastating Donkeys;draw\n"
|
||
|
+ "Allegoric Alaskans;Courageous Californians;draw";
|
||
|
let expected = "".to_string()
|
||
|
+ "Team | MP | W | D | L | P\n"
|
||
|
+ "Allegoric Alaskans | 3 | 2 | 1 | 0 | 7\n"
|
||
|
+ "Courageous Californians | 3 | 2 | 1 | 0 | 7\n"
|
||
|
+ "Blithering Badgers | 3 | 0 | 1 | 2 | 1\n"
|
||
|
+ "Devastating Donkeys | 3 | 0 | 1 | 2 | 1";
|
||
|
|
||
|
assert_eq!(tournament::tally(&input), expected);
|
||
|
}
|