about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaybe Waffle <waffle.lapkin@gmail.com>2022-01-27 00:50:34 +0300
committerMaybe Waffle <waffle.lapkin@gmail.com>2022-01-27 00:50:34 +0300
commit9c8cd1ff376568ffe41ee94f2c99a0d3d83262d5 (patch)
tree516b7c4891a809b1537e4aa6f5cdf045553ffc76
parentcd4245d318b04c8b44aed7e682c49b0507086d6c (diff)
downloadrust-9c8cd1ff376568ffe41ee94f2c99a0d3d83262d5.tar.gz
rust-9c8cd1ff376568ffe41ee94f2c99a0d3d83262d5.zip
Add a test for `char::DecodeUtf16::size_hint`
-rw-r--r--library/core/tests/char.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/library/core/tests/char.rs b/library/core/tests/char.rs
index 2b857a65919..d776a08323c 100644
--- a/library/core/tests/char.rs
+++ b/library/core/tests/char.rs
@@ -309,6 +309,31 @@ fn test_decode_utf16() {
 }
 
 #[test]
+fn test_decode_utf16_size_hint() {
+    fn check(s: &[u16]) {
+        let mut iter = char::decode_utf16(s.iter().cloned());
+
+        loop {
+            let count = iter.clone().count();
+            let (lower, upper) = iter.size_hint();
+
+            assert!(
+                lower <= count && count <= upper.unwrap(),
+                "lower = {lower}, upper = {upper:?}"
+            );
+
+            if let None = iter.next() {
+                break;
+            }
+        }
+    }
+
+    check(&[0xD800, 0x41, 0x42]);
+    check(&[0xD800, 0]);
+    check(&[0xD834, 0x006d]);
+}
+
+#[test]
 fn ed_iterator_specializations() {
     // Check counting
     assert_eq!('\n'.escape_default().count(), 2);