rust/hedgewars-network-protocol/src/tests/parser.rs
changeset 15830 ea459da15b30
child 15997 7c8697fa019f
equal deleted inserted replaced
15829:d5e6c8c92d87 15830:ea459da15b30
       
     1 use crate::{
       
     2     parser::HwProtocolError,
       
     3     parser::{message, server_message},
       
     4     types::GameCfg,
       
     5 };
       
     6 
       
     7 #[test]
       
     8 fn parse_test() {
       
     9     use crate::messages::HwProtocolMessage::*;
       
    10 
       
    11     assert_eq!(message(b"PING\n\n"), Ok((&b""[..], Ping)));
       
    12     assert_eq!(message(b"START_GAME\n\n"), Ok((&b""[..], StartGame)));
       
    13     assert_eq!(
       
    14         message(b"NICK\nit's me\n\n"),
       
    15         Ok((&b""[..], Nick("it's me".to_string())))
       
    16     );
       
    17     assert_eq!(message(b"PROTO\n51\n\n"), Ok((&b""[..], Proto(51))));
       
    18     assert_eq!(
       
    19         message(b"QUIT\nbye-bye\n\n"),
       
    20         Ok((&b""[..], Quit(Some("bye-bye".to_string()))))
       
    21     );
       
    22     assert_eq!(message(b"QUIT\n\n"), Ok((&b""[..], Quit(None))));
       
    23     assert_eq!(
       
    24         message(b"CMD\nwatch 49471\n\n"),
       
    25         Ok((&b""[..], Watch(49471)))
       
    26     );
       
    27     assert_eq!(
       
    28         message(b"BAN\nme\nbad\n77\n\n"),
       
    29         Ok((&b""[..], Ban("me".to_string(), "bad".to_string(), 77)))
       
    30     );
       
    31 
       
    32     assert_eq!(message(b"CMD\nPART\n\n"), Ok((&b""[..], Part(None))));
       
    33     assert_eq!(
       
    34         message(b"CMD\nPART _msg_\n\n"),
       
    35         Ok((&b""[..], Part(Some("_msg_".to_string()))))
       
    36     );
       
    37 
       
    38     assert_eq!(message(b"CMD\nRND\n\n"), Ok((&b""[..], Rnd(vec![]))));
       
    39     assert_eq!(
       
    40         message(b"CMD\nRND A B\n\n"),
       
    41         Ok((&b""[..], Rnd(vec![String::from("A"), String::from("B")])))
       
    42     );
       
    43 
       
    44     assert_eq!(
       
    45         message(b"CFG\nSCHEME\na\nA\n\n"),
       
    46         Ok((
       
    47             &b""[..],
       
    48             Cfg(GameCfg::Scheme("a".to_string(), vec!["A".to_string()]))
       
    49         ))
       
    50     );
       
    51 
       
    52     assert_eq!(
       
    53         message(b"QUIT\n1\n2\n\n"),
       
    54         Err(nom::Err::Error(HwProtocolError::new()))
       
    55     );
       
    56 }
       
    57 
       
    58 #[test]
       
    59 fn parse_server_messages_test() {
       
    60     use crate::messages::HwServerMessage::*;
       
    61 
       
    62     assert_eq!(server_message(b"PING\n\n"), Ok((&b""[..], Ping)));
       
    63 
       
    64     assert_eq!(
       
    65         server_message(b"JOINING\nnoone\n\n"),
       
    66         Ok((&b""[..], Joining("noone".to_string())))
       
    67     );
       
    68 
       
    69     assert_eq!(
       
    70         server_message(b"CLIENT_FLAGS\naaa\nA\nB\n\n"),
       
    71         Ok((
       
    72             &b""[..],
       
    73             ClientFlags("aaa".to_string(), vec!["A".to_string(), "B".to_string()])
       
    74         ))
       
    75     )
       
    76 }