Browse Source

Merge branch 'issue_009' of jake/elseware into master

pbs
jake 5 years ago
committed by Gogs
parent
commit
74a031e10c
  1. 58
      src/login/character.rs

58
src/login/character.rs

@ -131,6 +131,7 @@ fn generate_param_data(path: &str) -> (ParamDataHeader, Vec<u8>) {
}, buffer) }, buffer)
} }
#[derive(Clone)]
struct ClientState { struct ClientState {
param_index: usize, param_index: usize,
user: Option<UserAccount>, user: Option<UserAccount>,
@ -464,8 +465,9 @@ impl<EG: EntityGateway> ServerState for CharacterServerState<EG> {
mod test { mod test {
use super::*; use super::*;
use crate::entity::account::UserSettings; use crate::entity::account::UserSettings;
use libpso::character::settings;
use libpso::character::{settings, character};
use std::time::SystemTime; use std::time::SystemTime;
use crate::entity::gateway::{InMemoryGateway};
#[test] #[test]
fn test_option_send() { fn test_option_send() {
@ -521,4 +523,58 @@ mod test {
let bytes = send[0].1.as_bytes(); let bytes = send[0].1.as_bytes();
assert!(bytes == [0xC, 0, 0xE8, 0x02, 0,0,0,0, 1,0,0,0]); 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(3),
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::<Vec<_>>();
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,
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::<Vec<_>>();
assert!(send.len() == 2);
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());
}
} }
Loading…
Cancel
Save