From d9204b35cd865940da907970f0036a1359e40794 Mon Sep 17 00:00:00 2001 From: Maarten de Vries Date: Fri, 31 Oct 2025 10:44:15 +0100 Subject: [PATCH] Implement Ord and PartialOrd for ShortFileName. --- src/filesystem/filename.rs | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/filesystem/filename.rs b/src/filesystem/filename.rs index 31d2854..7d58b65 100644 --- a/src/filesystem/filename.rs +++ b/src/filesystem/filename.rs @@ -33,7 +33,7 @@ impl ToShortFileName for ShortFileName { impl ToShortFileName for &ShortFileName { fn to_short_filename(self) -> Result { - Ok(self.clone()) + Ok(*self) } } @@ -48,7 +48,7 @@ impl ToShortFileName for &str { /// ISO-8859-1 encoding is assumed. All lower-case is converted to upper-case by /// default. #[cfg_attr(feature = "defmt-log", derive(defmt::Format))] -#[derive(PartialEq, Eq, Clone)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct ShortFileName { pub(crate) contents: [u8; Self::TOTAL_LEN], } @@ -431,6 +431,40 @@ mod test { assert_eq!(sfn, ShortFileName::create_from_str("1.C").unwrap()); } + #[test] + fn filename_ordering() { + assert!( + ShortFileName::create_from_str("1.C").unwrap() + < ShortFileName::create_from_str("2.C").unwrap() + ); + assert!( + ShortFileName::create_from_str("1.C").unwrap() + < ShortFileName::create_from_str("1.D").unwrap() + ); + assert!( + ShortFileName::create_from_str("12.C").unwrap() + < ShortFileName::create_from_str("3.C").unwrap() + ); + assert!( + ShortFileName::create_from_str("1.D").unwrap() + < ShortFileName::create_from_str("12.C").unwrap() + ); + assert_eq!( + ShortFileName::create_from_str("1.D") + .unwrap() + .cmp(&ShortFileName::create_from_str("1.D").unwrap()), + core::cmp::Ordering::Equal + ); + assert!( + ShortFileName::create_from_str("1").unwrap() + < ShortFileName::create_from_str("1.C").unwrap() + ); + assert!( + ShortFileName::create_from_str("1.C").unwrap() + < ShortFileName::create_from_str("2").unwrap() + ); + } + #[test] fn filename_empty() { assert_eq!(