Now using macaddr datatype and added test for adding devices and displaynames
All checks were successful
Build Project / test (push) Successful in 6m32s

This commit is contained in:
2025-01-04 17:06:13 +00:00
parent 1466075b7b
commit f76f248446
9 changed files with 174 additions and 28 deletions

71
src/util.rs Normal file
View File

@@ -0,0 +1,71 @@
use thiserror::Error;
pub fn parse_mac_address(mac: &str) -> Result<[u8; 6], MacAddressError> {
if mac.len() != 12 {
return Err(MacAddressError::Length(mac.len()))
}
let mut mac_bytes = [0u8; 6];
for i in 0..6 {
let hex_part = &mac[i * 2..i * 2 + 2];
mac_bytes[i] = u8::from_str_radix(hex_part, 16)?;
}
Ok(mac_bytes)
}
#[derive(Error, Debug)]
pub enum MacAddressError {
#[error("Error converting MAC Address")]
Conversion(#[from] std::num::ParseIntError),
#[error("MAC Address length mismatch")]
Length(usize),
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_valid_mac_address_plain() {
let mac_str = "001A2B3C4D5E";
let expected = [0x00, 0x1A, 0x2B, 0x3C, 0x4D, 0x5E];
assert_eq!(parse_mac_address(mac_str).unwrap(), expected);
}
#[test]
fn test_valid_lowercase_mac_address() {
let mac_str = "001a2b3c4d5e";
let expected = [0x00, 0x1A, 0x2B, 0x3C, 0x4D, 0x5E];
assert_eq!(parse_mac_address(mac_str).unwrap(), expected);
}
#[test]
fn test_invalid_mac_address_wrong_length() {
let mac_str = "001A2B3C4D";
assert!(parse_mac_address(mac_str).is_err());
}
#[test]
fn test_invalid_mac_address_invalid_characters() {
let mac_str = "001A2B3C4DZZ";
assert!(parse_mac_address(mac_str).is_err());
}
#[test]
fn test_empty_mac_address() {
let mac_str = "";
assert!(parse_mac_address(mac_str).is_err());
}
#[test]
fn test_mac_address_with_extra_spaces() {
let mac_str = "001A2B3C 4D5E";
assert!(parse_mac_address(mac_str).is_err());
}
}