about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJubilee Young <workingjubilee@gmail.com>2024-06-25 22:29:37 -0700
committerJubilee Young <workingjubilee@gmail.com>2024-06-25 23:44:49 -0700
commit5aac24909c321dd4bb8d90380f9b2dd9f0162c68 (patch)
treef69641bca715591fa85f02b89605a50866855092
parente5167fe7bd52a8eaebbf01d0b1469785306f4a96 (diff)
downloadrust-5aac24909c321dd4bb8d90380f9b2dd9f0162c68.tar.gz
rust-5aac24909c321dd4bb8d90380f9b2dd9f0162c68.zip
std: test a variety of ways to extend a Wtf8Buf
-rw-r--r--library/std/src/sys_common/wtf8/tests.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/library/std/src/sys_common/wtf8/tests.rs b/library/std/src/sys_common/wtf8/tests.rs
index 6a1cc41a8fb..b57c99a8452 100644
--- a/library/std/src/sys_common/wtf8/tests.rs
+++ b/library/std/src/sys_common/wtf8/tests.rs
@@ -725,3 +725,27 @@ fn wtf8_utf8_boundary_between_surrogates() {
     string.push(CodePoint::from_u32(0xD800).unwrap());
     check_utf8_boundary(&string, 3);
 }
+
+#[test]
+fn wobbled_wtf8_plus_bytes_isnt_utf8() {
+    let mut string: Wtf8Buf = unsafe { Wtf8::from_bytes_unchecked(b"\xED\xA0\x80").to_owned() };
+    assert!(!string.is_known_utf8);
+    string.extend_from_slice(b"some utf-8");
+    assert!(!string.is_known_utf8);
+}
+
+#[test]
+fn wobbled_wtf8_plus_str_isnt_utf8() {
+    let mut string: Wtf8Buf = unsafe { Wtf8::from_bytes_unchecked(b"\xED\xA0\x80").to_owned() };
+    assert!(!string.is_known_utf8);
+    string.push_str("some utf-8");
+    assert!(!string.is_known_utf8);
+}
+
+#[test]
+fn unwobbly_wtf8_plus_utf8_is_utf8() {
+    let mut string: Wtf8Buf = Wtf8Buf::from_str("hello world");
+    assert!(string.is_known_utf8);
+    string.push_str("some utf-8");
+    assert!(string.is_known_utf8);
+}