aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-17 02:20:51 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-17 02:22:01 -0400
commit436db3df0bd0a5d92adbe122d678b3567f1dc10f (patch)
treef47c485683c93be63494475ce6d864768c28d7b2
parent712090ddce8cef981eda841d986639dea83be0e2 (diff)
downloadteleterm-436db3df0bd0a5d92adbe122d678b3567f1dc10f.tar.gz
teleterm-436db3df0bd0a5d92adbe122d678b3567f1dc10f.zip
add tests for protocol type handling
-rw-r--r--src/protocol.rs46
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(