Fix: make some fields optional

This commit is contained in:
eigenein committed 2023-05-04 17:53:52 +02:00
1 parent 1830536224
commit 0ac983832b
3 files changed
+30 -20

No files matched your search

+8 -8
View File
@@ -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
View File
@@ -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(())
}
Binary file not shown.