diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-10-17 02:20:51 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-10-17 02:22:01 -0400 |
commit | 436db3df0bd0a5d92adbe122d678b3567f1dc10f (patch) | |
tree | f47c485683c93be63494475ce6d864768c28d7b2 | |
parent | 712090ddce8cef981eda841d986639dea83be0e2 (diff) | |
download | teleterm-436db3df0bd0a5d92adbe122d678b3567f1dc10f.tar.gz teleterm-436db3df0bd0a5d92adbe122d678b3567f1dc10f.zip |
add tests for protocol type handling
-rw-r--r-- | src/protocol.rs | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/src/protocol.rs b/src/protocol.rs index 0894aea..c76a8a7 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -54,7 +54,7 @@ impl<T: tokio::io::AsyncWrite> FramedWriter<T> { pub const PROTO_VERSION: u8 = 1; #[repr(u8)] -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)] pub enum AuthType { Plain = 0, RecurseCenter, @@ -124,7 +124,7 @@ impl Auth { } #[repr(u8)] -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)] pub enum MessageType { Login = 0, StartStreaming, @@ -811,6 +811,48 @@ mod test { } } + #[test] + fn test_auth_values() { + let mut set = std::collections::HashSet::new(); + let mut seen_err = false; + for i in 0..=255 { + if seen_err { + assert!(AuthType::try_from(i).is_err()); + } else { + match AuthType::try_from(i) { + Ok(ty) => { + assert!(!set.contains(&ty)); + set.insert(ty); + } + Err(_) => { + seen_err = true; + } + } + } + } + } + + #[test] + fn test_message_values() { + let mut set = std::collections::HashSet::new(); + let mut seen_err = false; + for i in 0..=255 { + if seen_err { + assert!(MessageType::try_from(i).is_err()); + } else { + match MessageType::try_from(i) { + Ok(ty) => { + assert!(!set.contains(&ty)); + set.insert(ty); + } + Err(_) => { + seen_err = true; + } + } + } + } + } + fn valid_messages() -> Vec<Message> { vec![ Message::login( |