Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'lib/smol_str/tests/test.rs')
-rw-r--r--lib/smol_str/tests/test.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/smol_str/tests/test.rs b/lib/smol_str/tests/test.rs
index 00fab2ee1c..83648edeec 100644
--- a/lib/smol_str/tests/test.rs
+++ b/lib/smol_str/tests/test.rs
@@ -10,6 +10,7 @@ use smol_str::{SmolStr, SmolStrBuilder};
#[cfg(target_pointer_width = "64")]
fn smol_str_is_smol() {
assert_eq!(::std::mem::size_of::<SmolStr>(), ::std::mem::size_of::<String>(),);
+ assert_eq!(::std::mem::size_of::<Option<SmolStr>>(), ::std::mem::size_of::<SmolStr>(),);
}
#[test]
@@ -332,6 +333,29 @@ fn test_builder_push() {
assert_eq!("a".repeat(24), s);
}
+#[test]
+fn test_from_char() {
+ // ASCII char
+ let s: SmolStr = 'a'.into();
+ assert_eq!(s, "a");
+ assert!(!s.is_heap_allocated());
+
+ // Multi-byte char (2 bytes)
+ let s: SmolStr = SmolStr::from('ñ');
+ assert_eq!(s, "ñ");
+ assert!(!s.is_heap_allocated());
+
+ // 3-byte char
+ let s: SmolStr = '€'.into();
+ assert_eq!(s, "€");
+ assert!(!s.is_heap_allocated());
+
+ // 4-byte char (emoji)
+ let s: SmolStr = '🦀'.into();
+ assert_eq!(s, "🦀");
+ assert!(!s.is_heap_allocated());
+}
+
#[cfg(test)]
mod test_str_ext {
use smol_str::StrExt;