diff --git a/src/models/data/base_player_create.rs b/src/models/data/base_player_create.rs index f661535..4ca906a 100644 --- a/src/models/data/base_player_create.rs +++ b/src/models/data/base_player_create.rs @@ -4,8 +4,8 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] pub struct BasePlayerCreate { - #[serde(rename(deserialize = "playersBattleCategoriesIds"))] - pub players_battle_categories_ids: HashMap, + #[serde(default, rename(deserialize = "playersBattleCategoriesIds"))] + pub players_battle_categories_ids: Option>, #[serde(rename(deserialize = "battleLevel"))] pub battle_level: u8, @@ -22,17 +22,17 @@ pub struct BasePlayerCreate { #[serde(rename(deserialize = "camouflageSlot"))] pub camouflage_slot: u8, - #[serde(rename(deserialize = "avgMmr"))] - pub average_mmr: Vec>, + #[serde(default, rename(deserialize = "avgMmr"))] + pub average_mmr: Option>>, - #[serde(rename(deserialize = "playerWaitTimes"))] - pub player_wait_times: HashMap, + #[serde(default, rename(deserialize = "playerWaitTimes"))] + pub player_wait_times: Option>, #[serde(rename(deserialize = "accountDatabaseIds"))] pub account_database_ids: Vec, - #[serde(rename(deserialize = "turboBattlesStats"))] - pub turbo_battles_statistics: TurboBattlesStatistics, + #[serde(default, rename(deserialize = "turboBattlesStats"))] + pub turbo_battles_statistics: Option, } #[derive(Debug, Serialize, Deserialize)] diff --git a/tests/data.rs b/tests/data.rs index 77d8a68..8670237 100644 --- a/tests/data.rs +++ b/tests/data.rs @@ -19,13 +19,13 @@ fn parse_ok() -> Result<()> { } #[test] -fn type0_ok() -> Result<()> { +fn base_player_create_ok() -> Result<()> { let mut replay = Replay::open(File::open( "tests/replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay", )?)?; let data = replay.read_data()?; - let (author_nickname, arena_unique_id, arena_type_id, type_0) = data + let (author_nickname, arena_unique_id, arena_type_id, arguments) = data .packets .iter() .filter_map(|packet| { @@ -46,14 +46,17 @@ fn type0_ok() -> Result<()> { assert_eq!(author_nickname, "helaas_pindakaas"); assert_eq!(*arena_unique_id, 16114615898101270); assert_eq!(*arena_type_id, 43); - assert_eq!(type_0.battle_level, 9); - assert_eq!(type_0.battle_category_id, 13); - assert!(type_0.is_mouse_enabled); - assert_eq!(type_0.matchmaker_type, 2); - assert_eq!(type_0.camouflage_slot, 1); - assert_eq!(type_0.average_mmr, [Some(59.29457753400008), Some(99.34182121604681)]); + assert_eq!(arguments.battle_level, 9); + assert_eq!(arguments.battle_category_id, 13); + assert!(arguments.is_mouse_enabled); + assert_eq!(arguments.matchmaker_type, 2); + assert_eq!(arguments.camouflage_slot, 1); assert_eq!( - type_0.account_database_ids, + arguments.average_mmr, + Some(vec![Some(59.29457753400008), Some(99.34182121604681)]) + ); + assert_eq!( + arguments.account_database_ids, [ 517033644, 537867068, 597583401, 601893865, 576810156, 531053956, 599580824, 558025185, 526927603, 594778041, 505587490, 597422303, 531923111, 587617355 @@ -64,7 +67,7 @@ fn type0_ok() -> Result<()> { } #[test] -fn subtype_2f_players_ok() -> Result<()> { +fn update_arena_ok() -> Result<()> { let mut replay = Replay::open(File::open( "tests/replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay", )?)?; @@ -74,8 +77,8 @@ fn subtype_2f_players_ok() -> Result<()> { .packets .iter() .filter_map(|packet| match &packet.payload { - Payload::EntityMethod(EntityMethod::UpdateArena { arguments: sub_type_2f, .. }) => { - sub_type_2f.players.as_ref() + Payload::EntityMethod(EntityMethod::UpdateArena { arguments, .. }) => { + arguments.players.as_ref() } _ => None, }) @@ -91,3 +94,10 @@ fn subtype_2f_players_ok() -> Result<()> { Ok(()) } + +#[test] +fn training_room_ok() -> Result<()> { + let mut replay = Replay::open(File::open("tests/replays/training_room.wotbreplay")?)?; + replay.read_data()?; + Ok(()) +} diff --git a/tests/replays/training_room.wotbreplay b/tests/replays/training_room.wotbreplay new file mode 100644 index 0000000..8862713 Binary files /dev/null and b/tests/replays/training_room.wotbreplay differ