lkml.org 
[lkml]   [2022]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 18/28] rust: str: add `CStr` unit tests
    Date
    From: Milan Landaverde <milan@mdaverde.com>

    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>
    ---
    rust/kernel/str.rs | 29 +++++++++++++++++++++++++++++
    1 file changed, 29 insertions(+)

    diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs
    index 11d297c1a61c..3ed685cb5a3c 100644
    --- a/rust/kernel/str.rs
    +++ b/rust/kernel/str.rs
    @@ -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
    --
    2.38.1
    \
     
     \ /
      Last update: 2022-12-02 17:19    [W:4.052 / U:0.464 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site