From ba404ffbbfc8e215a22ff9c5144136e9138b89b7 Mon Sep 17 00:00:00 2001 From: Ben Reeves Date: Wed, 26 Jan 2022 23:04:13 -0600 Subject: [PATCH] Parse `"states"` field in blocks.json. --- src/api/tests/blocks.rs | 28 +++++++++++++++++++++++++--- src/models/block.rs | 4 +++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/api/tests/blocks.rs b/src/api/tests/blocks.rs index edbc58d..74a5efc 100644 --- a/src/api/tests/blocks.rs +++ b/src/api/tests/blocks.rs @@ -29,8 +29,30 @@ pub fn test_blocks_by_id() { for version in versions { let api = get_api(version); - let by_name = api.blocks.blocks().unwrap(); - assert!(by_name.get(&1).is_some()); - assert!(by_name.get(&5).is_some()); + let by_id = api.blocks.blocks().unwrap(); + assert!(by_id.get(&1).is_some()); + assert!(by_id.get(&5).is_some()); + } +} + +#[test] +pub fn test_block_states() { + let versions = get_test_versions(); + + for version in versions { + let api = get_api(version); + let by_name = api.blocks.blocks_by_name().unwrap(); + + let air = by_name.get("air").unwrap(); + if let Some(states) = &air.states { + // Air has no states. + assert_eq!(states.len(), 0); + } + + let water = by_name.get("water").unwrap(); + if let Some(states) = &water.states { + // Water has states. + assert_ne!(states.len(), 0); + } } } diff --git a/src/models/block.rs b/src/models/block.rs index 2105edd..e94303c 100644 --- a/src/models/block.rs +++ b/src/models/block.rs @@ -19,6 +19,7 @@ pub struct Block { pub filter_light: u8, pub min_state_id: Option, pub max_state_id: Option, + pub states: Option>, pub default_state: Option, #[serde(alias = "resistance")] pub blast_resistance: Option, @@ -40,7 +41,8 @@ pub struct Variation { } #[derive(Deserialize, Debug, Clone)] -#[serde(rename_all(deserialize = "camelCase", serialize = "snake_case"))] +// The fields in this part of the schema are not camelCase. +#[serde(rename_all(serialize = "snake_case"))] pub struct State { pub name: String, #[serde(alias = "type")]