blob: dfea7a3b4b4a8d5bce9fde129bde84a0a6a1a968 [file] [log] [blame]
#[cfg(feature = "std")]
use std::str::FromStr;
#[cfg(not(feature = "std"))]
use core::str::FromStr;
use assert_matches::assert_matches;
use crate::{MacAddr, MacAddr6, MacAddr8};
#[test]
fn test_parse_v6_upper_case_canonical_format() {
let addr = MacAddr6::from_str("12-34-56-78-9A-BC");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC], addr.as_bytes());
}
#[test]
fn test_parse_v6_lower_case_canonical_format() {
let addr = MacAddr6::from_str("ab-cd-ef-ab-cd-ef");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0xAB, 0xCD, 0xEF, 0xAB, 0xCD, 0xEF], addr.as_bytes());
}
#[test]
fn test_parse_v6_mixed_case_canonical_format() {
let addr = MacAddr6::from_str("AB-cd-Ef-Ab-cD-EF");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0xAB, 0xCD, 0xEF, 0xAB, 0xCD, 0xEF], addr.as_bytes());
}
#[test]
fn test_parse_v6_colon_format() {
let addr = MacAddr6::from_str("12:34:56:78:9A:BC");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC], addr.as_bytes());
}
#[test]
fn test_parse_v6_cisco_format() {
let addr = MacAddr6::from_str("1234.5678.9ABC");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC], addr.as_bytes());
}
#[test]
fn test_parse_v8_canonical_format() {
let addr = MacAddr8::from_str("12-34-56-78-9A-BC-DE-F0");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0], addr.as_bytes());
}
#[test]
fn test_parse_v8_colon_format() {
let addr = MacAddr8::from_str("12:34:56:78:9A:BC:DE:F0");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0], addr.as_bytes());
}
#[test]
fn test_parse_canonical_format() {
let addr = MacAddr::from_str("12-34-56-78-9A-BC-DE-F0");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_matches!(addr, MacAddr::V8(..));
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0], addr.as_bytes());
}
#[test]
fn test_parse_colon_format() {
let addr = MacAddr::from_str("12:34:56:78:9A:BC:DE:F0");
assert!(addr.is_ok());
let addr = addr.unwrap();
assert_matches!(addr, MacAddr::V8(..));
assert_eq!(&[0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0], addr.as_bytes());
}
#[test]
fn test_parse_v6_empty() {
let addr = MacAddr6::from_str("");
assert!(addr.is_err());
}
#[test]
fn test_parse_v8_empty() {
let addr = MacAddr8::from_str("");
assert!(addr.is_err());
}
#[test]
fn test_parse_empty() {
let addr = MacAddr::from_str("");
assert!(addr.is_err());
}
#[test]
fn test_parse_v6_partial_start() {
let addr = MacAddr6::from_str("b-cd-ef-12-34-56");
assert!(addr.is_err());
}
#[test]
fn test_parse_v8_partial_start() {
let addr = MacAddr8::from_str("b-cd-ef-12-34-56-78-9A");
assert!(addr.is_err());
}
#[test]
fn test_parse_v6_partial_end() {
let addr = MacAddr6::from_str("ab-cd-ef-12-34-5");
assert!(addr.is_err());
}
#[test]
fn test_parse_v8_partial_end() {
let addr = MacAddr8::from_str("ab-cd-ef-12-34-56-78-9");
assert!(addr.is_err());
}
#[test]
fn test_parse_v6_invalid_char() {
let addr = MacAddr6::from_str("ab-Qd-ef-12-34-56");
assert!(addr.is_err());
}
#[test]
fn test_parse_v8_invalid_char() {
let addr = MacAddr8::from_str("ab-Qd-ef-12-34-56-78-9A");
assert!(addr.is_err());
}
#[test]
fn test_parse_v6_different_delimiters() {
let addr = MacAddr6::from_str("ab-cd:ef-12-34-56");
assert!(addr.is_err());
}
#[test]
fn test_parse_v8_different_delimiters() {
let addr = MacAddr8::from_str("ab-cd-ef-12-34-56-78:9A");
assert!(addr.is_err());
}