rust/hedgewars-server/src/protocol/test.rs
changeset 15804 747278149393
parent 15803 b06b33cf0a89
child 15805 61da40b657fa
--- a/rust/hedgewars-server/src/protocol/test.rs	Wed Jun 23 15:32:48 2021 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-use proptest::{
-    arbitrary::{any, any_with, Arbitrary, StrategyFor},
-    strategy::{BoxedStrategy, Just, Map, Strategy},
-    test_runner::{Reason, TestRunner},
-};
-
-use crate::core::types::{GameCfg, HedgehogInfo, ServerVar, ServerVar::*, TeamInfo, VoteType};
-
-use super::messages::{HwProtocolMessage, HwProtocolMessage::*};
-
-// Due to inability to define From between Options
-trait Into2<T>: Sized {
-    fn into2(self) -> T;
-}
-impl<T> Into2<T> for T {
-    fn into2(self) -> T {
-        self
-    }
-}
-impl Into2<Vec<String>> for Vec<Ascii> {
-    fn into2(self) -> Vec<String> {
-        self.into_iter().map(|x| x.0).collect()
-    }
-}
-impl Into2<String> for Ascii {
-    fn into2(self) -> String {
-        self.0
-    }
-}
-impl Into2<Option<String>> for Option<Ascii> {
-    fn into2(self) -> Option<String> {
-        self.map(|x| x.0)
-    }
-}
-
-macro_rules! proto_msg_case {
-    ($val: ident()) => {
-        Just($val)
-    };
-    ($val: ident($arg: ty)) => {
-        any::<$arg>().prop_map(|v| $val(v.into2()))
-    };
-    ($val: ident($arg1: ty, $arg2: ty)) => {
-        any::<($arg1, $arg2)>().prop_map(|v| $val(v.0.into2(), v.1.into2()))
-    };
-    ($val: ident($arg1: ty, $arg2: ty, $arg3: ty)) => {
-        any::<($arg1, $arg2, $arg3)>().prop_map(|v| $val(v.0.into2(), v.1.into2(), v.2.into2()))
-    };
-}
-
-macro_rules! proto_msg_match {
-    ($var: expr, def = $default: expr, $($num: expr => $constr: ident $res: tt),*) => (
-        match $var {
-            $($num => (proto_msg_case!($constr $res)).boxed()),*,
-            _ => Just($default).boxed()
-        }
-    )
-}
-
-/// Wrapper type for generating non-empty strings
-#[derive(Debug)]
-struct Ascii(String);
-
-impl Arbitrary for Ascii {
-    type Parameters = <String as Arbitrary>::Parameters;
-
-    fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy {
-        "[a-zA-Z0-9]+".prop_map(Ascii).boxed()
-    }
-
-    type Strategy = BoxedStrategy<Ascii>;
-}
-
-impl Arbitrary for GameCfg {
-    type Parameters = ();
-
-    fn arbitrary_with(_args: <Self as Arbitrary>::Parameters) -> <Self as Arbitrary>::Strategy {
-        use crate::core::types::GameCfg::*;
-        (0..10)
-            .no_shrink()
-            .prop_flat_map(|i| {
-                proto_msg_match!(i, def = FeatureSize(0),
-            0 => FeatureSize(u32),
-            1 => MapType(Ascii),
-            2 => MapGenerator(u32),
-            3 => MazeSize(u32),
-            4 => Seed(Ascii),
-            5 => Template(u32),
-            6 => Ammo(Ascii, Option<Ascii>),
-            7 => Scheme(Ascii, Vec<Ascii>),
-            8 => Script(Ascii),
-            9 => Theme(Ascii),
-            10 => DrawnMap(Ascii))
-            })
-            .boxed()
-    }
-
-    type Strategy = BoxedStrategy<GameCfg>;
-}
-
-impl Arbitrary for TeamInfo {
-    type Parameters = ();
-
-    fn arbitrary_with(_args: <Self as Arbitrary>::Parameters) -> <Self as Arbitrary>::Strategy {
-        (
-            "[a-z]+",
-            0u8..127u8,
-            "[a-z]+",
-            "[a-z]+",
-            "[a-z]+",
-            "[a-z]+",
-            0u8..127u8,
-        )
-            .prop_map(|(name, color, grave, fort, voice_pack, flag, difficulty)| {
-                fn hog(n: u8) -> HedgehogInfo {
-                    HedgehogInfo {
-                        name: format!("hog{}", n),
-                        hat: format!("hat{}", n),
-                    }
-                }
-                let hedgehogs = [
-                    hog(1),
-                    hog(2),
-                    hog(3),
-                    hog(4),
-                    hog(5),
-                    hog(6),
-                    hog(7),
-                    hog(8),
-                ];
-                TeamInfo {
-                    owner: String::new(),
-                    name,
-                    color,
-                    grave,
-                    fort,
-                    voice_pack,
-                    flag,
-                    difficulty,
-                    hedgehogs,
-                    hedgehogs_number: 0,
-                }
-            })
-            .boxed()
-    }
-
-    type Strategy = BoxedStrategy<TeamInfo>;
-}
-
-impl Arbitrary for ServerVar {
-    type Parameters = ();
-
-    fn arbitrary_with(args: Self::Parameters) -> Self::Strategy {
-        (0..=2)
-            .no_shrink()
-            .prop_flat_map(|i| {
-                proto_msg_match!(i, def = ServerVar::LatestProto(0),
-                    0 => MOTDNew(Ascii),
-                    1 => MOTDOld(Ascii),
-                    2 => LatestProto(u16)
-                )
-            })
-            .boxed()
-    }
-
-    type Strategy = BoxedStrategy<ServerVar>;
-}
-
-impl Arbitrary for VoteType {
-    type Parameters = ();
-
-    fn arbitrary_with(args: Self::Parameters) -> Self::Strategy {
-        use VoteType::*;
-        (0..=4)
-            .no_shrink()
-            .prop_flat_map(|i| {
-                proto_msg_match!(i, def = VoteType::Pause,
-                    0 => Kick(Ascii),
-                    1 => Map(Option<Ascii>),
-                    2 => Pause(),
-                    3 => NewSeed(),
-                    4 => HedgehogsPerTeam(u8)
-                )
-            })
-            .boxed()
-    }
-
-    type Strategy = BoxedStrategy<VoteType>;
-}
-
-pub fn gen_proto_msg() -> BoxedStrategy<HwProtocolMessage> where {
-    let res = (0..=55).no_shrink().prop_flat_map(|i| {
-        proto_msg_match!(i, def = Ping,
-            0 => Ping(),
-            1 => Pong(),
-            2 => Quit(Option<Ascii>),
-            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<Ascii>),
-            16 => JoinRoom(Ascii, Option<Ascii>),
-            17 => Follow(Ascii),
-            18 => Rnd(Vec<Ascii>),
-            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<Ascii>),
-            30 => Cfg(GameCfg),
-            31 => AddTeam(Box<TeamInfo>),
-            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<Ascii>),
-            49 => CallVote(Option<VoteType>),
-            50 => Vote(bool),
-            51 => ForceVote(bool),
-            52 => Save(Ascii, Ascii),
-            53 => Delete(Ascii),
-            54 => SaveRoom(Ascii),
-            55 => LoadRoom(Ascii)
-        )
-    });
-    res.boxed()
-}