gamelog events unit tests
This commit is contained in:
parent
58e4742f12
commit
66013667d8
3 changed files with 48 additions and 3 deletions
|
|
@ -5,7 +5,7 @@ use crate::data::names::*;
|
|||
|
||||
lazy_static! {
|
||||
/// A count of each event that has happened over the run. i.e. "turns", "descended", "ascended"
|
||||
static ref EVENT_COUNTER: Mutex<HashMap<String, i32>> = Mutex::new(HashMap::new());
|
||||
pub static ref EVENT_COUNTER: Mutex<HashMap<String, i32>> = Mutex::new(HashMap::new());
|
||||
// A record of events that happened on a given turn. i.e. "Advanced to level 2".
|
||||
pub static ref EVENTS: Mutex<HashMap<u32, Vec<String>>> = Mutex::new(HashMap::new());
|
||||
// A record of floors visited, and monsters killed. Used to determine if an event is significant.
|
||||
|
|
@ -41,8 +41,9 @@ pub fn restore_events(events: HashMap<u32, Vec<String>>) {
|
|||
}
|
||||
/// Wipes all events - for starting a new game.
|
||||
pub fn clear_events() {
|
||||
EVENT_COUNTER.lock().unwrap().clear();
|
||||
EVENTS.lock().unwrap().clear();
|
||||
let (mut events, mut event_counts) = (EVENTS.lock().unwrap(), EVENT_COUNTER.lock().unwrap());
|
||||
events.clear();
|
||||
event_counts.clear();
|
||||
}
|
||||
|
||||
#[allow(unused_mut)]
|
||||
|
|
|
|||
43
tests/gamelog_test.rs
Normal file
43
tests/gamelog_test.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// tests/gamelog_test.rs
|
||||
use rust_rl::gamelog::*;
|
||||
use rust_rl::data::events::*;
|
||||
use lazy_static::lazy_static;
|
||||
use std::sync::Mutex;
|
||||
|
||||
// To ensure this test module uses a single thread.
|
||||
lazy_static! {
|
||||
static ref SINGLE_THREAD: Mutex<()> = Mutex::new(());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn recording_event() {
|
||||
let _lock = SINGLE_THREAD.lock();
|
||||
clear_events();
|
||||
record_event(EVENT::Turn(1));
|
||||
record_event(EVENT::Turn(0));
|
||||
record_event(EVENT::Turn(-1));
|
||||
record_event(EVENT::Killed("mob".to_string()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn getting_event_count() {
|
||||
let _lock = SINGLE_THREAD.lock();
|
||||
clear_events();
|
||||
record_event(EVENT::Turn(1));
|
||||
assert_eq!(get_event_count(EVENT::COUNT_TURN), 1);
|
||||
record_event(EVENT::Turn(3));
|
||||
assert_eq!(get_event_count(EVENT::COUNT_TURN), 4);
|
||||
clear_events();
|
||||
assert_eq!(get_event_count(EVENT::COUNT_TURN), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cloning_events() {
|
||||
let _lock = SINGLE_THREAD.lock();
|
||||
clear_events();
|
||||
record_event(EVENT::Level(1));
|
||||
record_event(EVENT::Turn(5));
|
||||
record_event(EVENT::Identified("item".to_string()));
|
||||
let cloned_events = clone_events();
|
||||
assert_eq!(EVENTS.lock().unwrap().clone(), cloned_events);
|
||||
}
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
// tests/mod.rs
|
||||
mod map_test;
|
||||
mod gamelog_test;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue