Skip to content

Commit

Permalink
roguelike-tdd: Fix Passage::get_random_central_passage
Browse files Browse the repository at this point in the history
  • Loading branch information
bouzuya committed Feb 18, 2024
1 parent e89a4c5 commit 495dace
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions roguelike-tdd/src/dungeon/passage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,17 @@ impl Passage {
}

// 中央の部屋とその上下左右の部屋のうちランダムな部屋を配列で返す
pub fn get_central_passage(rooms: &[Room]) -> Vec<Room> {
pub fn get_random_central_passage(rooms: &[Room]) -> Vec<Room> {
let center = rooms[4].clone();
let center_top = rooms[1].clone();
let center_left = rooms[3].clone();
let center_right = rooms[5].clone();
let center_bottom = rooms[7].clone();
let choices = vec![center_top, center_left, center_right, center_bottom];
let choice = rand::seq::SliceRandom::choose(choices.as_slice(), &mut rand::thread_rng())
.expect("slice is not empty")
.clone();
let candidates = vec![center_top, center_left, center_right, center_bottom];
let choice: Room =
rand::seq::SliceRandom::choose(candidates.as_slice(), &mut rand::thread_rng())
.expect("candidates is not empty")
.clone();
vec![center, choice]
}

Expand Down Expand Up @@ -136,14 +137,14 @@ WWWWWWWW
}

#[test]
fn test_get_centeral_passage_中央の部屋とランダムな部屋を通路でつなぐ配列が返ること() {
fn test_get_random_centeral_passage_中央の部屋とランダムな部屋を通路でつなぐ配列が返ること() {
let rooms = build_rooms();
let center = rooms[4].clone();
let center_top = rooms[1].clone();
let center_left = rooms[3].clone();
let center_right = rooms[5].clone();
let center_bottom = rooms[7].clone();
let actual = Passage::get_central_passage(&rooms);
let actual = Passage::get_random_central_passage(&rooms);
assert_eq!(actual[0], center);
assert!([center_top, center_left, center_right, center_bottom].contains(&actual[1]));
}
Expand Down

0 comments on commit 495dace

Please sign in to comment.