diff -r d5e6c8c92d87 -r ea459da15b30 rust/hedgewars-network-protocol/tests/test.rs --- a/rust/hedgewars-network-protocol/tests/test.rs Fri Jan 28 02:33:44 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -use proptest::{ - arbitrary::any, - proptest, - strategy::{BoxedStrategy, Just, Strategy}, -}; - -use hedgewars_network_protocol::messages::{HwProtocolMessage, HwServerMessage}; -use hedgewars_network_protocol::parser::{message, server_message}; -use hedgewars_network_protocol::types::{GameCfg, ServerVar, TeamInfo, VoteType}; - -use hedgewars_network_protocol::types::testing::*; -use hedgewars_network_protocol::{proto_msg_case, proto_msg_match}; - -pub fn gen_proto_msg() -> BoxedStrategy where { - use hedgewars_network_protocol::messages::HwProtocolMessage::*; - - let res = (0..=58).no_shrink().prop_flat_map(|i| { - proto_msg_match!(i, def = Ping, - 0 => Ping(), - 1 => Pong(), - 2 => Quit(Option), - 4 => Global(Ascii), - 5 => Watch(u32), - 6 => ToggleServerRegisteredOnly(), - 7 => SuperPower(), - 8 => Info(Ascii), - 9 => Nick(Ascii), - 10 => Proto(u16), - 11 => Password(Ascii, Ascii), - 12 => Checker(u16, Ascii, Ascii), - 13 => List(), - 14 => Chat(Ascii), - 15 => CreateRoom(Ascii, Option), - 16 => JoinRoom(Ascii, Option), - 17 => Follow(Ascii), - 18 => Rnd(Vec), - 19 => Kick(Ascii), - 20 => Ban(Ascii, Ascii, u32), - 21 => BanIp(Ascii, Ascii, u32), - 22 => BanNick(Ascii, Ascii, u32), - 23 => BanList(), - 24 => Unban(Ascii), - 25 => SetServerVar(ServerVar), - 26 => GetServerVar(), - 27 => RestartServer(), - 28 => Stats(), - 29 => Part(Option), - 30 => Cfg(GameCfg), - 31 => AddTeam(Box), - 32 => RemoveTeam(Ascii), - 33 => SetHedgehogsNumber(Ascii, u8), - 34 => SetTeamColor(Ascii, u8), - 35 => ToggleReady(), - 36 => StartGame(), - 37 => EngineMessage(Ascii), - 38 => RoundFinished(), - 39 => ToggleRestrictJoin(), - 40 => ToggleRestrictTeams(), - 41 => ToggleRegisteredOnly(), - 42 => RoomName(Ascii), - 43 => Delegate(Ascii), - 44 => TeamChat(Ascii), - 45 => MaxTeams(u8), - 46 => Fix(), - 47 => Unfix(), - 48 => Greeting(Option), - 49 => CallVote(Option), - 50 => Vote(bool), - 51 => ForceVote(bool), - 52 => Save(Ascii, Ascii), - 53 => Delete(Ascii), - 54 => SaveRoom(Ascii), - 55 => LoadRoom(Ascii), - 56 => CheckerReady(), - 57 => CheckedOk(Vec), - 58 => CheckedFail(Ascii) - ) - }); - res.boxed() -} - -pub fn gen_server_msg() -> BoxedStrategy where { - use hedgewars_network_protocol::messages::HwServerMessage::*; - - let res = (0..=38).no_shrink().prop_flat_map(|i| { - proto_msg_match!(i, def = Ping, - 0 => Connected(Ascii, u32), - 1 => Redirect(u16), - 2 => Ping(), - 3 => Pong(), - 4 => Bye(Ascii), - 5 => Nick(Ascii), - 6 => Proto(u16), - 7 => AskPassword(Ascii), - 8 => ServerAuth(Ascii), - 9 => LogonPassed(), - 10 => LobbyLeft(Ascii, Ascii), - 11 => LobbyJoined(Vec), - // 12 => ChatMsg { Ascii, Ascii }, - 13 => ClientFlags(Ascii, Vec), - 14 => Rooms(Vec), - 15 => RoomAdd(Vec), - 16=> RoomJoined(Vec), - 17 => RoomLeft(Ascii, Ascii), - 18 => RoomRemove(Ascii), - 19 => RoomUpdated(Ascii, Vec), - 20 => Joining(Ascii), - 21 => TeamAdd(Vec), - 22 => TeamRemove(Ascii), - 23 => TeamAccepted(Ascii), - 24 => TeamColor(Ascii, u8), - 25 => HedgehogsNumber(Ascii, u8), - 26 => ConfigEntry(Ascii, Vec), - 27 => Kicked(), - 28 => RunGame(), - 29 => ForwardEngineMessage(Vec), - 30 => RoundFinished(), - 31 => ReplayStart(), - 32 => Info(Vec), - 33 => ServerMessage(Ascii), - 34 => ServerVars(Vec), - 35 => Notice(Ascii), - 36 => Warning(Ascii), - 37 => Error(Ascii), - 38 => Replay(Vec) - ) - }); - res.boxed() -} - -proptest! { - #[test] - fn is_parser_composition_idempotent(ref msg in gen_proto_msg()) { - println!("!! Msg: {:?}, Bytes: {:?} !!", msg, msg.to_raw_protocol().as_bytes()); - assert_eq!(message(msg.to_raw_protocol().as_bytes()), Ok((&b""[..], msg.clone()))) - } - - #[test] - fn is_server_message_parser_composition_idempotent(ref msg in gen_server_msg()) { - println!("!! Msg: {:?}, Bytes: {:?} !!", msg, msg.to_raw_protocol().as_bytes()); - assert_eq!(server_message(msg.to_raw_protocol().as_bytes()), Ok((&b""[..], msg.clone()))) - } -}