mirror of
https://github.com/redstrate/Kawari.git
synced 2025-04-27 17:07:46 +00:00
Start writing tests for ItemInfo and ContainerInfo IPC
This commit is contained in:
parent
8659623eda
commit
264fac4b4e
6 changed files with 100 additions and 0 deletions
BIN
resources/tests/container_info.bin
Normal file
BIN
resources/tests/container_info.bin
Normal file
Binary file not shown.
BIN
resources/tests/item_info.bin
Normal file
BIN
resources/tests/item_info.bin
Normal file
Binary file not shown.
BIN
resources/tests/tiny_mandragora.bin
Normal file
BIN
resources/tests/tiny_mandragora.bin
Normal file
Binary file not shown.
35
src/world/ipc/container_info.rs
Normal file
35
src/world/ipc/container_info.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
use binrw::binrw;
|
||||
|
||||
#[binrw]
|
||||
#[brw(little)]
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct ContainerInfo {
|
||||
pub sequence: u32,
|
||||
pub num_items: u32,
|
||||
pub container_id: u32,
|
||||
pub start_or_finish: u32,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::{fs::read, io::Cursor, path::PathBuf};
|
||||
|
||||
use binrw::BinRead;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn read_containerinfo() {
|
||||
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
d.push("resources/tests/container_info.bin");
|
||||
|
||||
let buffer = read(d).unwrap();
|
||||
let mut buffer = Cursor::new(&buffer);
|
||||
|
||||
let container_info = ContainerInfo::read_le(&mut buffer).unwrap();
|
||||
assert_eq!(container_info.sequence, 1);
|
||||
assert_eq!(container_info.num_items, 0);
|
||||
assert_eq!(container_info.container_id, 1);
|
||||
assert_eq!(container_info.start_or_finish, 0);
|
||||
}
|
||||
}
|
59
src/world/ipc/item_info.rs
Normal file
59
src/world/ipc/item_info.rs
Normal file
|
@ -0,0 +1,59 @@
|
|||
use binrw::binrw;
|
||||
|
||||
#[binrw]
|
||||
#[brw(little)]
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct ItemInfo {
|
||||
pub sequence: u32,
|
||||
pub unk1: u32,
|
||||
pub container_id: u16,
|
||||
pub slot: u16,
|
||||
pub quantity: u32,
|
||||
pub catalog_id: u32,
|
||||
pub reserved_flag: u32,
|
||||
pub signature_id: u64,
|
||||
pub hq_flag: u8,
|
||||
pub unk2: u8,
|
||||
pub condition: u16,
|
||||
pub spirit_bond: u16,
|
||||
pub stain: u16,
|
||||
pub glamour_catalog_id: u32,
|
||||
pub materia: [u16; 5],
|
||||
#[brw(pad_before = 6)]
|
||||
pub unk3: u32,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::{fs::read, io::Cursor, path::PathBuf};
|
||||
|
||||
use binrw::BinRead;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn read_iteminfo() {
|
||||
let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
d.push("resources/tests/item_info.bin");
|
||||
|
||||
let buffer = read(d).unwrap();
|
||||
let mut buffer = Cursor::new(&buffer);
|
||||
|
||||
let item_info = ItemInfo::read_le(&mut buffer).unwrap();
|
||||
assert_eq!(item_info.sequence, 4);
|
||||
assert_eq!(item_info.unk1, 0);
|
||||
assert_eq!(item_info.container_id, 1000);
|
||||
assert_eq!(item_info.slot, 11);
|
||||
assert_eq!(item_info.quantity, 1);
|
||||
assert_eq!(item_info.catalog_id, 4426);
|
||||
assert_eq!(item_info.reserved_flag, 0);
|
||||
assert_eq!(item_info.signature_id, 0);
|
||||
assert_eq!(item_info.hq_flag, 0);
|
||||
assert_eq!(item_info.unk2, 0);
|
||||
assert_eq!(item_info.condition, 30000);
|
||||
assert_eq!(item_info.spirit_bond, 0);
|
||||
assert_eq!(item_info.stain, 0);
|
||||
assert_eq!(item_info.glamour_catalog_id, 0);
|
||||
assert_eq!(item_info.unk3, 0);
|
||||
}
|
||||
}
|
|
@ -47,6 +47,12 @@ pub use weather_change::WeatherChange;
|
|||
mod action_request;
|
||||
pub use action_request::ActionRequest;
|
||||
|
||||
mod container_info;
|
||||
pub use container_info::ContainerInfo;
|
||||
|
||||
mod item_info;
|
||||
pub use item_info::ItemInfo;
|
||||
|
||||
use crate::common::Position;
|
||||
use crate::common::read_string;
|
||||
use crate::common::write_string;
|
||||
|
|
Loading…
Add table
Reference in a new issue