From 51c59127abfc7990d217d4207b204e9d287ac5bc Mon Sep 17 00:00:00 2001 From: moznion Date: Wed, 2 Dec 2020 00:16:43 +0900 Subject: [PATCH] Add tag structure --- radius/src/lib.rs | 1 + radius/src/tag.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 radius/src/tag.rs diff --git a/radius/src/lib.rs b/radius/src/lib.rs index a70a618..23319fa 100644 --- a/radius/src/lib.rs +++ b/radius/src/lib.rs @@ -6,3 +6,4 @@ pub mod request; pub mod rfc2865; pub mod rfc2866; pub mod rfc2867; +pub mod tag; diff --git a/radius/src/tag.rs b/radius/src/tag.rs new file mode 100644 index 0000000..b599510 --- /dev/null +++ b/radius/src/tag.rs @@ -0,0 +1,41 @@ +#[derive(Debug, PartialEq)] +pub struct Tag { + pub(crate) value: u8, +} + +impl Tag { + pub fn get_value(&self) -> u8 { + self.value + } + + pub fn is_zero(&self) -> bool { + self.value == 0 + } + + pub fn is_valid_value(&self) -> bool { + 1 <= self.value && self.value <= 0x1f + } +} + +#[cfg(test)] +mod tests { + use crate::tag::Tag; + + #[test] + fn test_is_zero() { + let tag = Tag { value: 0 }; + assert_eq!(tag.is_zero(), true); + let tag = Tag { value: 1 }; + assert_eq!(tag.is_zero(), false); + } + + #[test] + fn test_is_valid_value() { + let tag = Tag { value: 1 }; + assert_eq!(tag.is_valid_value(), true); + let tag = Tag { value: 0 }; + assert_eq!(tag.is_valid_value(), false); + let tag = Tag { value: 0x20 }; + assert_eq!(tag.is_valid_value(), false); + } +}