mirror of
https://github.com/eigenein/wotbreplay-parser.git
synced 2026-10-21 02:17:02 +02:00
Fix: make some fields optional
This commit is contained in:
1 parent
1830536224
commit
0ac983832b
3 files changed
+30
-20
No files matched your search
@@ -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<u32, (u8, u32)>,
|
||||
#[serde(default, rename(deserialize = "playersBattleCategoriesIds"))]
|
||||
pub players_battle_categories_ids: Option<HashMap<u32, (u8, u32)>>,
|
||||
|
||||
#[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<Option<f64>>,
|
||||
#[serde(default, rename(deserialize = "avgMmr"))]
|
||||
pub average_mmr: Option<Vec<Option<f64>>>,
|
||||
|
||||
#[serde(rename(deserialize = "playerWaitTimes"))]
|
||||
pub player_wait_times: HashMap<u32, f64>,
|
||||
#[serde(default, rename(deserialize = "playerWaitTimes"))]
|
||||
pub player_wait_times: Option<HashMap<u32, f64>>,
|
||||
|
||||
#[serde(rename(deserialize = "accountDatabaseIds"))]
|
||||
pub account_database_ids: Vec<u32>,
|
||||
|
||||
#[serde(rename(deserialize = "turboBattlesStats"))]
|
||||
pub turbo_battles_statistics: TurboBattlesStatistics,
|
||||
#[serde(default, rename(deserialize = "turboBattlesStats"))]
|
||||
pub turbo_battles_statistics: Option<TurboBattlesStatistics>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
|
||||
+22
-12
@@ -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(())
|
||||
}
|
||||
Generated
BIN
Binary file not shown.
Reference in new issue
Block a user