diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/tinystr/tests | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/tinystr/tests')
-rw-r--r-- | third_party/rust/tinystr/tests/main.rs | 482 |
1 files changed, 482 insertions, 0 deletions
diff --git a/third_party/rust/tinystr/tests/main.rs b/third_party/rust/tinystr/tests/main.rs new file mode 100644 index 0000000000..a3fb78be65 --- /dev/null +++ b/third_party/rust/tinystr/tests/main.rs @@ -0,0 +1,482 @@ +use std::fmt::Write; +use std::ops::Deref; +use tinystr::{Error, TinyStr16, TinyStr4, TinyStr8}; + +#[test] +fn tiny4_basic() { + let s: TinyStr4 = "abc".parse().unwrap(); + assert_eq!(s.deref(), "abc"); +} + +#[test] +fn tiny4_from_bytes() { + let s = TinyStr4::from_bytes("abc".as_bytes()).unwrap(); + assert_eq!(s.deref(), "abc"); + + assert_eq!( + TinyStr4::from_bytes(&[0, 159, 146, 150]), + Err(Error::NonAscii) + ); + assert_eq!(TinyStr4::from_bytes(&[]), Err(Error::InvalidSize)); + assert_eq!(TinyStr4::from_bytes(&[0]), Err(Error::InvalidNull)); +} + +#[test] +fn tiny4_size() { + assert_eq!("".parse::<TinyStr4>(), Err(Error::InvalidSize)); + assert!("1".parse::<TinyStr4>().is_ok()); + assert!("12".parse::<TinyStr4>().is_ok()); + assert!("123".parse::<TinyStr4>().is_ok()); + assert!("1234".parse::<TinyStr4>().is_ok()); + assert_eq!("12345".parse::<TinyStr4>(), Err(Error::InvalidSize)); + assert_eq!("123456789".parse::<TinyStr4>(), Err(Error::InvalidSize)); +} + +#[test] +fn tiny4_null() { + assert_eq!("a\u{0}b".parse::<TinyStr4>(), Err(Error::InvalidNull)); +} + +#[test] +fn tiny4_new_unchecked() { + let reference: TinyStr4 = "en".parse().unwrap(); + let uval: u32 = reference.into(); + let s = unsafe { TinyStr4::new_unchecked(uval) }; + assert_eq!(s, reference); + assert_eq!(s, "en"); +} + +#[test] +fn tiny4_nonascii() { + assert_eq!("\u{4000}".parse::<TinyStr4>(), Err(Error::NonAscii)); +} + +#[test] +fn tiny4_alpha() { + let s: TinyStr4 = "@aZ[".parse().unwrap(); + assert!(!s.is_ascii_alphabetic()); + assert!(!s.is_ascii_alphanumeric()); + assert_eq!(s.to_ascii_uppercase().as_str(), "@AZ["); + assert_eq!(s.to_ascii_lowercase().as_str(), "@az["); + + assert!("abYZ".parse::<TinyStr4>().unwrap().is_ascii_alphabetic()); + assert!("abYZ".parse::<TinyStr4>().unwrap().is_ascii_alphanumeric()); + assert!("a123".parse::<TinyStr4>().unwrap().is_ascii_alphanumeric()); + assert!(!"a123".parse::<TinyStr4>().unwrap().is_ascii_alphabetic()); +} + +#[test] +fn tiny4_numeric() { + let s: TinyStr4 = "@aZ[".parse().unwrap(); + assert!(!s.is_ascii_numeric()); + + assert!("0123".parse::<TinyStr4>().unwrap().is_ascii_numeric()); +} + +#[test] +fn tiny4_titlecase() { + assert_eq!( + "abcd" + .parse::<TinyStr4>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcd" + ); + assert_eq!( + "ABCD" + .parse::<TinyStr4>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcd" + ); + assert_eq!( + "aBCD" + .parse::<TinyStr4>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcd" + ); + assert_eq!( + "A123" + .parse::<TinyStr4>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "A123" + ); + assert_eq!( + "123a" + .parse::<TinyStr4>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "123a" + ); +} + +#[test] +fn tiny4_ord() { + let mut v: Vec<TinyStr4> = vec!["zh".parse().unwrap(), "fr".parse().unwrap()]; + v.sort(); + + assert_eq!(v.get(0).unwrap().as_str(), "fr"); + assert_eq!(v.get(1).unwrap().as_str(), "zh"); +} + +#[test] +fn tiny4_eq() { + let s1: TinyStr4 = "en".parse().unwrap(); + let s2: TinyStr4 = "fr".parse().unwrap(); + let s3: TinyStr4 = "en".parse().unwrap(); + + assert_eq!(s1, s3); + assert_ne!(s1, s2); +} + +#[test] +fn tiny4_display() { + let s: TinyStr4 = "abcd".parse().unwrap(); + let mut result = String::new(); + write!(result, "{}", s).unwrap(); + assert_eq!(result, "abcd"); + assert_eq!(format!("{}", s), "abcd"); +} + +#[test] +fn tiny4_debug() { + let s: TinyStr4 = "abcd".parse().unwrap(); + assert_eq!(format!("{:#?}", s), "\"abcd\""); +} + +#[test] +fn tiny8_basic() { + let s: TinyStr8 = "abcde".parse().unwrap(); + assert_eq!(s.deref(), "abcde"); +} + +#[test] +fn tiny8_from_bytes() { + let s = TinyStr8::from_bytes("abcde".as_bytes()).unwrap(); + assert_eq!(s.deref(), "abcde"); + + assert_eq!( + TinyStr8::from_bytes(&[0, 159, 146, 150]), + Err(Error::NonAscii) + ); + assert_eq!(TinyStr8::from_bytes(&[]), Err(Error::InvalidSize)); + assert_eq!(TinyStr8::from_bytes(&[0]), Err(Error::InvalidNull)); +} + +#[test] +fn tiny8_size() { + assert_eq!("".parse::<TinyStr8>(), Err(Error::InvalidSize)); + assert!("1".parse::<TinyStr8>().is_ok()); + assert!("12".parse::<TinyStr8>().is_ok()); + assert!("123".parse::<TinyStr8>().is_ok()); + assert!("1234".parse::<TinyStr8>().is_ok()); + assert!("12345".parse::<TinyStr8>().is_ok()); + assert!("123456".parse::<TinyStr8>().is_ok()); + assert!("1234567".parse::<TinyStr8>().is_ok()); + assert!("12345678".parse::<TinyStr8>().is_ok()); + assert_eq!("123456789".parse::<TinyStr8>(), Err(Error::InvalidSize)); +} + +#[test] +fn tiny8_null() { + assert_eq!("a\u{0}b".parse::<TinyStr8>(), Err(Error::InvalidNull)); +} + +#[test] +fn tiny8_new_unchecked() { + let reference: TinyStr8 = "Windows".parse().unwrap(); + let uval: u64 = reference.into(); + let s = unsafe { TinyStr8::new_unchecked(uval) }; + assert_eq!(s, reference); + assert_eq!(s, "Windows"); +} + +#[test] +fn tiny8_nonascii() { + assert_eq!("\u{4000}".parse::<TinyStr8>(), Err(Error::NonAscii)); +} + +#[test] +fn tiny8_alpha() { + let s: TinyStr8 = "@abcXYZ[".parse().unwrap(); + assert!(!s.is_ascii_alphabetic()); + assert!(!s.is_ascii_alphanumeric()); + assert_eq!(s.to_ascii_uppercase().as_str(), "@ABCXYZ["); + assert_eq!(s.to_ascii_lowercase().as_str(), "@abcxyz["); + + assert!("abcXYZ".parse::<TinyStr8>().unwrap().is_ascii_alphabetic()); + assert!("abcXYZ" + .parse::<TinyStr8>() + .unwrap() + .is_ascii_alphanumeric()); + assert!(!"abc123".parse::<TinyStr8>().unwrap().is_ascii_alphabetic()); + assert!("abc123" + .parse::<TinyStr8>() + .unwrap() + .is_ascii_alphanumeric()); +} + +#[test] +fn tiny8_numeric() { + let s: TinyStr8 = "@abcXYZ[".parse().unwrap(); + assert!(!s.is_ascii_numeric()); + + assert!("01234567".parse::<TinyStr8>().unwrap().is_ascii_numeric()); +} + +#[test] +fn tiny8_titlecase() { + assert_eq!( + "abcdabcd" + .parse::<TinyStr8>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcd" + ); + assert_eq!( + "ABCDABCD" + .parse::<TinyStr8>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcd" + ); + assert_eq!( + "aBCDaBCD" + .parse::<TinyStr8>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcd" + ); + assert_eq!( + "A123a123" + .parse::<TinyStr8>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "A123a123" + ); + assert_eq!( + "123a123A" + .parse::<TinyStr8>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "123a123a" + ); +} + +#[test] +fn tiny8_ord() { + let mut v: Vec<TinyStr8> = vec!["nedis".parse().unwrap(), "macos".parse().unwrap()]; + v.sort(); + + assert_eq!(v.get(0).unwrap().as_str(), "macos"); + assert_eq!(v.get(1).unwrap().as_str(), "nedis"); +} + +#[test] +fn tiny8_eq() { + let s1: TinyStr8 = "windows".parse().unwrap(); + let s2: TinyStr8 = "mac".parse().unwrap(); + let s3: TinyStr8 = "windows".parse().unwrap(); + + assert_eq!(s1, s3); + assert_ne!(s1, s2); +} + +#[test] +fn tiny8_display() { + let s: TinyStr8 = "abcdef".parse().unwrap(); + let mut result = String::new(); + write!(result, "{}", s).unwrap(); + assert_eq!(result, "abcdef"); + assert_eq!(format!("{}", s), "abcdef"); +} + +#[test] +fn tiny8_debug() { + let s: TinyStr8 = "abcdef".parse().unwrap(); + assert_eq!(format!("{:#?}", s), "\"abcdef\""); +} + +#[test] +fn tiny16_from_bytes() { + let s = TinyStr16::from_bytes("abcdefghijk".as_bytes()).unwrap(); + assert_eq!(s.deref(), "abcdefghijk"); + + assert_eq!( + TinyStr16::from_bytes(&[0, 159, 146, 150]), + Err(Error::NonAscii) + ); + assert_eq!(TinyStr16::from_bytes(&[]), Err(Error::InvalidSize)); + assert_eq!(TinyStr16::from_bytes(&[0]), Err(Error::InvalidNull)); +} + +#[test] +fn tiny16_size() { + assert_eq!("".parse::<TinyStr16>(), Err(Error::InvalidSize)); + assert!("1".parse::<TinyStr16>().is_ok()); + assert!("12".parse::<TinyStr16>().is_ok()); + assert!("123".parse::<TinyStr16>().is_ok()); + assert!("1234".parse::<TinyStr16>().is_ok()); + assert!("12345".parse::<TinyStr16>().is_ok()); + assert!("123456".parse::<TinyStr16>().is_ok()); + assert!("1234567".parse::<TinyStr16>().is_ok()); + assert!("12345678".parse::<TinyStr16>().is_ok()); + assert!("123456781".parse::<TinyStr16>().is_ok()); + assert!("1234567812".parse::<TinyStr16>().is_ok()); + assert!("12345678123".parse::<TinyStr16>().is_ok()); + assert!("123456781234".parse::<TinyStr16>().is_ok()); + assert!("1234567812345".parse::<TinyStr16>().is_ok()); + assert!("12345678123456".parse::<TinyStr16>().is_ok()); + assert!("123456781234567".parse::<TinyStr16>().is_ok()); + assert!("1234567812345678".parse::<TinyStr16>().is_ok()); + assert_eq!( + "12345678123456789".parse::<TinyStr16>(), + Err(Error::InvalidSize) + ); +} + +#[test] +fn tiny16_null() { + assert_eq!("a\u{0}b".parse::<TinyStr16>(), Err(Error::InvalidNull)); +} + +#[test] +fn tiny16_new_unchecked() { + let reference: TinyStr16 = "WindowsCE/ME/NT".parse().unwrap(); + let uval: u128 = reference.into(); + let s = unsafe { TinyStr16::new_unchecked(uval) }; + assert_eq!(s, reference); + assert_eq!(s, "WindowsCE/ME/NT"); +} + +#[test] +fn tiny16_nonascii() { + assert_eq!("\u{4000}".parse::<TinyStr16>(), Err(Error::NonAscii)); +} + +#[test] +fn tiny16_alpha() { + let s: TinyStr16 = "@abcdefgTUVWXYZ[".parse().unwrap(); + assert!(!s.is_ascii_alphabetic()); + assert!(!s.is_ascii_alphanumeric()); + assert_eq!(s.to_ascii_uppercase().as_str(), "@ABCDEFGTUVWXYZ["); + assert_eq!(s.to_ascii_lowercase().as_str(), "@abcdefgtuvwxyz["); + + assert!("abcdefgTUVWXYZ" + .parse::<TinyStr16>() + .unwrap() + .is_ascii_alphabetic()); + assert!("abcdefgTUVWXYZ" + .parse::<TinyStr16>() + .unwrap() + .is_ascii_alphanumeric()); + assert!(!"abcdefg0123456" + .parse::<TinyStr16>() + .unwrap() + .is_ascii_alphabetic()); + assert!("abcdefgTUVWXYZ" + .parse::<TinyStr16>() + .unwrap() + .is_ascii_alphanumeric()); +} + +#[test] +fn tiny16_numeric() { + let s: TinyStr16 = "@abcdefgTUVWXYZ[".parse().unwrap(); + assert!(!s.is_ascii_numeric()); + + assert!("0123456789" + .parse::<TinyStr16>() + .unwrap() + .is_ascii_numeric()); +} + +#[test] +fn tiny16_titlecase() { + assert_eq!( + "abcdabcdabcdabcd" + .parse::<TinyStr16>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcdabcdabcd" + ); + assert_eq!( + "ABCDABCDABCDABCD" + .parse::<TinyStr16>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcdabcdabcd" + ); + assert_eq!( + "aBCDaBCDaBCDaBCD" + .parse::<TinyStr16>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "Abcdabcdabcdabcd" + ); + assert_eq!( + "A123a123A123a123" + .parse::<TinyStr16>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "A123a123a123a123" + ); + assert_eq!( + "123a123A123a123A" + .parse::<TinyStr16>() + .unwrap() + .to_ascii_titlecase() + .as_str(), + "123a123a123a123a" + ); +} + +#[test] +fn tiny16_ord() { + let mut v: Vec<TinyStr16> = vec!["nedis_xxxx".parse().unwrap(), "macos_xxxx".parse().unwrap()]; + v.sort(); + + assert_eq!(v.get(0).unwrap().as_str(), "macos_xxxx"); + assert_eq!(v.get(1).unwrap().as_str(), "nedis_xxxx"); +} + +#[test] +fn tiny16_eq() { + let s1: TinyStr16 = "windows98SE".parse().unwrap(); + let s2: TinyStr16 = "mac".parse().unwrap(); + let s3: TinyStr16 = "windows98SE".parse().unwrap(); + + assert_eq!(s1, s3); + assert_ne!(s1, s2); +} + +#[test] +fn tiny16_display() { + let s: TinyStr16 = "abcdefghijkl".parse().unwrap(); + let mut result = String::new(); + write!(result, "{}", s).unwrap(); + assert_eq!(result, "abcdefghijkl"); + assert_eq!(format!("{}", s), "abcdefghijkl"); +} + +#[test] +fn tiny16_debug() { + let s: TinyStr16 = "abcdefghijkl".parse().unwrap(); + assert_eq!(format!("{:#?}", s), "\"abcdefghijkl\""); +} |