1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

update tests

This commit is contained in:
Robin Appelman 2025-02-19 19:30:31 +01:00
commit 43c9021ba2
5 changed files with 5300 additions and 31 deletions

View file

@ -1,5 +1,6 @@
use crate::demo::data::DemoTick; use crate::demo::data::DemoTick;
use crate::demo::gameevent_gen::PlayerDeathEvent; use crate::demo::gameevent_gen::PlayerDeathEvent;
use crate::demo::gamevent::GameEvent;
use crate::demo::message::packetentities::EntityId; use crate::demo::message::packetentities::EntityId;
use crate::demo::packet::datatable::{ClassId, ServerClass, ServerClassName}; use crate::demo::packet::datatable::{ClassId, ServerClass, ServerClassName};
use crate::demo::parser::analyser::{Class, Team, UserId, UserInfo}; use crate::demo::parser::analyser::{Class, Team, UserId, UserInfo};
@ -420,6 +421,7 @@ pub struct GameState {
pub server_classes: Vec<ServerClass>, pub server_classes: Vec<ServerClass>,
pub interval_per_tick: f32, pub interval_per_tick: f32,
pub outer_map: HashMap<Handle, EntityId>, pub outer_map: HashMap<Handle, EntityId>,
pub events: Vec<(DemoTick, GameEvent)>,
} }
impl GameState { impl GameState {

View file

@ -53,21 +53,26 @@ impl MessageHandler for GameStateAnalyser {
Message::ServerInfo(message) => { Message::ServerInfo(message) => {
self.state.interval_per_tick = message.interval_per_tick self.state.interval_per_tick = message.interval_per_tick
} }
Message::GameEvent(GameEventMessage { event, .. }) => match event { Message::GameEvent(GameEventMessage { event, .. }) => {
GameEvent::PlayerDeath(death) => { self.state.events.push((self.tick, event.clone()));
self.state.kills.push(Kill::new(self.tick, death.as_ref())) match event {
GameEvent::PlayerDeath(death) => {
self.state.kills.push(Kill::new(self.tick, death.as_ref()))
}
GameEvent::RoundStart(_) => {
self.state.buildings.clear();
self.state.projectiles.clear();
}
GameEvent::TeamPlayRoundStart(_) => {
self.state.buildings.clear();
self.state.projectiles.clear();
}
GameEvent::ObjectDestroyed(ObjectDestroyedEvent { index, .. }) => {
self.state.remove_building((*index as u32).into());
}
_ => {}
} }
GameEvent::RoundStart(_) => { }
self.state.buildings.clear();
}
GameEvent::TeamPlayRoundStart(_) => {
self.state.buildings.clear();
}
GameEvent::ObjectDestroyed(ObjectDestroyedEvent { index, .. }) => {
self.state.remove_building((*index as u32).into());
}
_ => {}
},
_ => {} _ => {}
} }
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -30,9 +30,12 @@ fn snapshot_test(input_file: &str) {
fn game_state_test(input_file: &str) { fn game_state_test(input_file: &str) {
let file = fs::read(format!("test_data/{}", input_file)).expect("Unable to read file"); let file = fs::read(format!("test_data/{}", input_file)).expect("Unable to read file");
let demo = Demo::new(&file); let demo = Demo::new(&file);
let (_, state) = DemoParser::new_with_analyser(demo.get_stream(), GameStateAnalyser::new()) let (_, mut state) = DemoParser::new_with_analyser(demo.get_stream(), GameStateAnalyser::new())
.parse() .parse()
.unwrap(); .unwrap();
state.events.clear();
insta::assert_json_snapshot!(input_file, state); insta::with_settings!({sort_maps => true}, {
insta::assert_json_snapshot!(input_file, state);
});
} }