rust: str: add CStr
unit tests
Add unit tests for `CStr::from_bytes_with_nul()` and `CStr::from_bytes_with_nul_unchecked()`. These serve as an example of the first unit tests for Rust code (i.e. different from documentation tests). Signed-off-by: Milan Landaverde <milan@mdaverde.com> [Reworded, adapted for upstream and applied latest changes] Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
c07e67bd2d
commit
985f1f09bf
@ -321,6 +321,35 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_cstr_to_str() {
|
||||
let good_bytes = b"\xf0\x9f\xa6\x80\0";
|
||||
let checked_cstr = CStr::from_bytes_with_nul(good_bytes).unwrap();
|
||||
let checked_str = checked_cstr.to_str().unwrap();
|
||||
assert_eq!(checked_str, "🦀");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn test_cstr_to_str_panic() {
|
||||
let bad_bytes = b"\xc3\x28\0";
|
||||
let checked_cstr = CStr::from_bytes_with_nul(bad_bytes).unwrap();
|
||||
checked_cstr.to_str().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cstr_as_str_unchecked() {
|
||||
let good_bytes = b"\xf0\x9f\x90\xA7\0";
|
||||
let checked_cstr = CStr::from_bytes_with_nul(good_bytes).unwrap();
|
||||
let unchecked_str = unsafe { checked_cstr.as_str_unchecked() };
|
||||
assert_eq!(unchecked_str, "🐧");
|
||||
}
|
||||
}
|
||||
|
||||
/// Allows formatting of [`fmt::Arguments`] into a raw buffer.
|
||||
///
|
||||
/// It does not fail if callers write past the end of the buffer so that they can calculate the
|
||||
|
Loading…
Reference in New Issue
Block a user