mirror of
https://github.com/ArthurDanjou/exercism-rust.git
synced 2026-01-27 18:30:27 +01:00
Initial commit
This commit is contained in:
152
minesweeper/tests/minesweeper.rs
Normal file
152
minesweeper/tests/minesweeper.rs
Normal file
@@ -0,0 +1,152 @@
|
||||
use minesweeper::annotate;
|
||||
|
||||
fn remove_annotations(board: &[&str]) -> Vec<String> {
|
||||
board.iter().map(|r| remove_annotations_in_row(r)).collect()
|
||||
}
|
||||
|
||||
fn remove_annotations_in_row(row: &str) -> String {
|
||||
row.chars()
|
||||
.map(|ch| match ch {
|
||||
'*' => '*',
|
||||
_ => ' ',
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn run_test(test_case: &[&str]) {
|
||||
let cleaned = remove_annotations(test_case);
|
||||
let cleaned_strs = cleaned.iter().map(|r| &r[..]).collect::<Vec<_>>();
|
||||
let expected = test_case.iter().map(|&r| r.to_string()).collect::<Vec<_>>();
|
||||
assert_eq!(expected, annotate(&cleaned_strs));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn no_rows() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn no_columns() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn no_mines() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn board_with_only_mines() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"***",
|
||||
"***",
|
||||
"***",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn mine_surrounded_by_spaces() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"111",
|
||||
"1*1",
|
||||
"111",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn space_surrounded_by_mines() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"***",
|
||||
"*8*",
|
||||
"***",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn horizontal_line() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"1*2*1",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn horizontal_line_mines_at_edges() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"*1 1*",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn vertical_line() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"1",
|
||||
"*",
|
||||
"2",
|
||||
"*",
|
||||
"1",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn vertical_line_mines_at_edges() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"*",
|
||||
"1",
|
||||
" ",
|
||||
"1",
|
||||
"*",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn cross() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
" 2*2 ",
|
||||
"25*52",
|
||||
"*****",
|
||||
"25*52",
|
||||
" 2*2 ",
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn large_board() {
|
||||
#[rustfmt::skip]
|
||||
run_test(&[
|
||||
"1*22*1",
|
||||
"12*322",
|
||||
" 123*2",
|
||||
"112*4*",
|
||||
"1*22*2",
|
||||
"111111",
|
||||
]);
|
||||
}
|
||||
Reference in New Issue
Block a user