From 8e8f21403f0f8053a00c528ae58838a96eeb9a8e Mon Sep 17 00:00:00 2001 From: andy Date: Sun, 12 Jan 2020 22:07:52 -0400 Subject: [PATCH 1/2] initial character create test --- src/login/character.rs | 57 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/login/character.rs b/src/login/character.rs index a8bef2b..ad026ee 100644 --- a/src/login/character.rs +++ b/src/login/character.rs @@ -131,6 +131,7 @@ fn generate_param_data(path: &str) -> (ParamDataHeader, Vec) { }, buffer) } +#[derive(Clone)] struct ClientState { param_index: usize, user: Option, @@ -464,8 +465,9 @@ impl ServerState for CharacterServerState { mod test { use super::*; use crate::entity::account::UserSettings; - use libpso::character::settings; + use libpso::character::{settings, character}; use std::time::SystemTime; + use crate::entity::gateway::{InMemoryGateway}; #[test] fn test_option_send() { @@ -521,4 +523,57 @@ mod test { let bytes = send[0].1.as_bytes(); assert!(bytes == [0xC, 0, 0xE8, 0x02, 0,0,0,0, 1,0,0,0]); } + + #[test] + fn test_character_create() { + let TestData = InMemoryGateway::new(); + let mut fake_user = ClientState::new(); + fake_user.user = Some(UserAccount { + id: 3, + username: "hi3".to_string(), + password: bcrypt::hash("qwer", 5).unwrap(), + guildcard: Some(3u32), + team_id: None, + banned: false, + muted_until: SystemTime::now(), + created_at: SystemTime::now(), + flags: 0, + }); + + let mut server = CharacterServerState::new(TestData.clone()); + server.clients.insert(ClientId(1), fake_user.clone()); + let mut send = server.handle(ClientId(1), &RecvCharacterPacket::SetFlag(SetFlag {flags: 1})).unwrap().collect::>(); + send = server.handle(ClientId(1), &RecvCharacterPacket::CharacterPreview(CharacterPreview {slot: 1, character: character::SelectScreenCharacter { + exp: 0, + level: 0, + guildcard: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], + _unknown: [0, 0], + name_color: 4294967295, + model: 0, + _unused: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + name_color_checksum: 0, + section_id: 4, + ch_class: 2, + v2flags: 0, + version: 3, + v1flags: 49, + costume: 0, + skin: 4, + face: 0, + head: 0, + hair: 0, + hair_r: 0, + hair_g: 0, + hair_b: 0, + prop_x: 0.33333334, + prop_y: 0.0, + name: [9, 69, 116, 101, 115, 116, 32, 110, 97, 109, 101, 0, 0, 0, 0, 0], // "\tEtest name" + play_time: 0, + } })).unwrap().collect::>(); + assert!(send.len() == 2); + + let chars = TestData.get_characters_by_user(&fake_user.user.clone().unwrap()); + assert!(chars[1].unwrap().character.name == [9, 69, 116, 101, 115, 116, 32, 110, 97, 109, 101, 0, 0, 0, 0, 0]); + assert!(chars[0].is_none()); + } } From e6af44841a275ea01640392b8826713fde0fd1fc Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 13 Jan 2020 21:40:30 -0400 Subject: [PATCH 2/2] fixed pt.1 --- src/login/character.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/login/character.rs b/src/login/character.rs index ad026ee..ca4e65c 100644 --- a/src/login/character.rs +++ b/src/login/character.rs @@ -532,7 +532,7 @@ mod test { id: 3, username: "hi3".to_string(), password: bcrypt::hash("qwer", 5).unwrap(), - guildcard: Some(3u32), + guildcard: Some(3), team_id: None, banned: false, muted_until: SystemTime::now(), @@ -543,6 +543,7 @@ mod test { let mut server = CharacterServerState::new(TestData.clone()); server.clients.insert(ClientId(1), fake_user.clone()); let mut send = server.handle(ClientId(1), &RecvCharacterPacket::SetFlag(SetFlag {flags: 1})).unwrap().collect::>(); + assert!(TestData.get_user_by_id(3).unwrap().flags == 1); send = server.handle(ClientId(1), &RecvCharacterPacket::CharacterPreview(CharacterPreview {slot: 1, character: character::SelectScreenCharacter { exp: 0, level: 0, @@ -572,7 +573,7 @@ mod test { } })).unwrap().collect::>(); assert!(send.len() == 2); - let chars = TestData.get_characters_by_user(&fake_user.user.clone().unwrap()); + let chars = TestData.get_characters_by_user(&fake_user.user.unwrap()); assert!(chars[1].unwrap().character.name == [9, 69, 116, 101, 115, 116, 32, 110, 97, 109, 101, 0, 0, 0, 0, 0]); assert!(chars[0].is_none()); }