diff options
| author | mat <git@matdoes.dev> | 2025-12-22 21:43:54 -1400 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-12-22 21:43:54 -1400 |
| commit | 82e3d46ca319badcbc584cf902aeebcbd30948b9 (patch) | |
| tree | 4afb8c6135caacbdf9f1f04d451cb2bae1c488b6 /azalea-client/tests/simulation/close_open_container.rs | |
| parent | 0429a81d706da7c45600d357f9f9a14cef6113b4 (diff) | |
| download | azalea-drasl-82e3d46ca319badcbc584cf902aeebcbd30948b9.tar.xz | |
run azalea-client integration tests as one binary
per https://corrode.dev/blog/tips-for-faster-rust-compile-times/\#combine-all-integration-tests-into-a-single-binary <3
Diffstat (limited to 'azalea-client/tests/simulation/close_open_container.rs')
| -rw-r--r-- | azalea-client/tests/simulation/close_open_container.rs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/azalea-client/tests/simulation/close_open_container.rs b/azalea-client/tests/simulation/close_open_container.rs new file mode 100644 index 00000000..033451f1 --- /dev/null +++ b/azalea-client/tests/simulation/close_open_container.rs @@ -0,0 +1,67 @@ +use azalea_chat::FormattedText; +use azalea_client::test_utils::prelude::*; +use azalea_core::position::ChunkPos; +use azalea_entity::inventory::Inventory; +use azalea_protocol::packets::{ + ConnectionProtocol, + game::{ClientboundContainerClose, ClientboundOpenScreen, ClientboundSetChunkCacheCenter}, +}; +use azalea_registry::builtin::MenuKind; + +#[test] +fn test_close_open_container() { + let _lock = init(); + + let mut simulation = Simulation::new(ConnectionProtocol::Game); + + simulation.receive_packet(default_login_packet()); + simulation.tick(); + // receive a chunk so the player is "loaded" now + simulation.receive_packet(ClientboundSetChunkCacheCenter { x: 1, z: 23 }); + simulation.receive_packet(make_basic_empty_chunk( + ChunkPos::new(1, 23), + (384 + 64) / 16, + )); + simulation.tick(); + + // ensure no container is open + simulation.with_component(|inventory: &Inventory| { + assert!(inventory.container_menu.is_none()); + assert_eq!(inventory.id, 0); + }); + + // open a container + simulation.receive_packet(ClientboundOpenScreen { + container_id: 1, + menu_type: MenuKind::Generic9x3, + title: FormattedText::default(), + }); + simulation.tick(); + + simulation.with_component(|inventory: &Inventory| { + assert!(inventory.container_menu.is_some()); + assert_eq!(inventory.id, 1); + }); + + // close and open + simulation.receive_packet(ClientboundContainerClose { container_id: 1 }); + simulation.receive_packet(ClientboundOpenScreen { + container_id: 2, + menu_type: MenuKind::Generic9x3, + title: FormattedText::default(), + }); + simulation.tick(); + simulation.with_component(|inventory: &Inventory| { + // ensure that the new container was opened + assert!(inventory.container_menu.is_some()); + assert_eq!(inventory.id, 2); + }); + + // close with the wrong container id should still close + simulation.receive_packet(ClientboundContainerClose { container_id: 123 }); + simulation.tick(); + simulation.with_component(|inventory: &Inventory| { + assert!(inventory.container_menu.is_none()); + assert_eq!(inventory.id, 0); + }); +} |
