Loading system/gd/rust/linux/stack/src/lib.rs +8 −3 Original line number Diff line number Diff line Loading @@ -53,15 +53,16 @@ impl ToString for BDAddr { impl BDAddr { /// Constructs a BDAddr from a vector of 6 bytes. fn from_byte_vec(raw_addr: &Vec<u8>) -> Option<BDAddr> { pub fn from_byte_vec(raw_addr: &Vec<u8>) -> Option<BDAddr> { if let Ok(val) = raw_addr.clone().try_into() { return Some(BDAddr { val }); } None } fn from_string(addr_str: String) -> Option<BDAddr> { let s = addr_str.split(':').collect::<Vec<&str>>(); pub fn from_string<S: Into<String>>(addr: S) -> Option<BDAddr> { let addr: String = addr.into(); let s = addr.split(':').collect::<Vec<&str>>(); if s.len() != 6 { return None; Loading @@ -79,6 +80,10 @@ impl BDAddr { Some(BDAddr { val: raw }) } pub fn to_byte_arr(&self) -> [u8; 6] { self.val.clone() } } /// Message types that are sent to the stack main dispatch loop. Loading system/gd/rust/linux/stack/tests/bdaddr.rs 0 → 100644 +39 −0 Original line number Diff line number Diff line #[cfg(test)] mod tests { use btstack::BDAddr; #[test] fn from_string_invalid() { assert!(BDAddr::from_string("").is_none()); assert!(BDAddr::from_string("some invalid string").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd:ee:ff:00").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd:ee").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd::ff").is_none()); } #[test] fn from_string_valid() { let addr = BDAddr::from_string("11:22:33:aa:bb:cc"); assert!(addr.is_some()); assert_eq!([0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc], addr.unwrap().to_byte_arr()); // Upper/lower case should not matter. let addr = BDAddr::from_string("11:22:33:AA:BB:CC"); assert!(addr.is_some()); assert_eq!([0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc], addr.unwrap().to_byte_arr()); } #[test] fn from_byte_vec_invalid() { assert!(BDAddr::from_byte_vec(&vec![]).is_none()); assert!(BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5]).is_none()); assert!(BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5, 6, 7]).is_none()); } #[test] fn from_byte_vec_valid() { let addr = BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5, 6]); assert!(addr.is_some()); assert_eq!([1, 2, 3, 4, 5, 6], addr.unwrap().to_byte_arr()); } } Loading
system/gd/rust/linux/stack/src/lib.rs +8 −3 Original line number Diff line number Diff line Loading @@ -53,15 +53,16 @@ impl ToString for BDAddr { impl BDAddr { /// Constructs a BDAddr from a vector of 6 bytes. fn from_byte_vec(raw_addr: &Vec<u8>) -> Option<BDAddr> { pub fn from_byte_vec(raw_addr: &Vec<u8>) -> Option<BDAddr> { if let Ok(val) = raw_addr.clone().try_into() { return Some(BDAddr { val }); } None } fn from_string(addr_str: String) -> Option<BDAddr> { let s = addr_str.split(':').collect::<Vec<&str>>(); pub fn from_string<S: Into<String>>(addr: S) -> Option<BDAddr> { let addr: String = addr.into(); let s = addr.split(':').collect::<Vec<&str>>(); if s.len() != 6 { return None; Loading @@ -79,6 +80,10 @@ impl BDAddr { Some(BDAddr { val: raw }) } pub fn to_byte_arr(&self) -> [u8; 6] { self.val.clone() } } /// Message types that are sent to the stack main dispatch loop. Loading
system/gd/rust/linux/stack/tests/bdaddr.rs 0 → 100644 +39 −0 Original line number Diff line number Diff line #[cfg(test)] mod tests { use btstack::BDAddr; #[test] fn from_string_invalid() { assert!(BDAddr::from_string("").is_none()); assert!(BDAddr::from_string("some invalid string").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd:ee:ff:00").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd:ee").is_none()); assert!(BDAddr::from_string("aa:bb:cc:dd::ff").is_none()); } #[test] fn from_string_valid() { let addr = BDAddr::from_string("11:22:33:aa:bb:cc"); assert!(addr.is_some()); assert_eq!([0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc], addr.unwrap().to_byte_arr()); // Upper/lower case should not matter. let addr = BDAddr::from_string("11:22:33:AA:BB:CC"); assert!(addr.is_some()); assert_eq!([0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc], addr.unwrap().to_byte_arr()); } #[test] fn from_byte_vec_invalid() { assert!(BDAddr::from_byte_vec(&vec![]).is_none()); assert!(BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5]).is_none()); assert!(BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5, 6, 7]).is_none()); } #[test] fn from_byte_vec_valid() { let addr = BDAddr::from_byte_vec(&vec![1, 2, 3, 4, 5, 6]); assert!(addr.is_some()); assert_eq!([1, 2, 3, 4, 5, 6], addr.unwrap().to_byte_arr()); } }