@@ -1738,6 +1738,28 @@ fn test_utf16_code_units() {
1738
1738
assert_eq ! ( "é\u{1F4A9} " . encode_utf16( ) . collect:: <Vec <u16 >>( ) , [ 0xE9 , 0xD83D , 0xDCA9 ] )
1739
1739
}
1740
1740
1741
+ #[ test]
1742
+ fn test_utf16_size_hint ( ) {
1743
+ assert_eq ! ( "" . encode_utf16( ) . size_hint( ) , ( 0 , Some ( 0 ) ) ) ;
1744
+ assert_eq ! ( "123" . encode_utf16( ) . size_hint( ) , ( 1 , Some ( 3 ) ) ) ;
1745
+ assert_eq ! ( "1234" . encode_utf16( ) . size_hint( ) , ( 2 , Some ( 4 ) ) ) ;
1746
+ assert_eq ! ( "12345678" . encode_utf16( ) . size_hint( ) , ( 3 , Some ( 8 ) ) ) ;
1747
+
1748
+ fn hint_vec ( src : & str ) -> Vec < ( usize , Option < usize > ) > {
1749
+ let mut it = src. encode_utf16 ( ) ;
1750
+ let mut result = Vec :: new ( ) ;
1751
+ result. push ( it. size_hint ( ) ) ;
1752
+ while it. next ( ) . is_some ( ) {
1753
+ result. push ( it. size_hint ( ) )
1754
+ }
1755
+ result
1756
+ }
1757
+
1758
+ assert_eq ! ( hint_vec( "12" ) , [ ( 1 , Some ( 2 ) ) , ( 1 , Some ( 1 ) ) , ( 0 , Some ( 0 ) ) ] ) ;
1759
+ assert_eq ! ( hint_vec( "\u{101234} " ) , [ ( 2 , Some ( 4 ) ) , ( 1 , Some ( 1 ) ) , ( 0 , Some ( 0 ) ) ] ) ;
1760
+ assert_eq ! ( hint_vec( "\u{101234} a" ) , [ ( 2 , Some ( 5 ) ) , ( 2 , Some ( 2 ) ) , ( 1 , Some ( 1 ) ) , ( 0 , Some ( 0 ) ) ] ) ;
1761
+ }
1762
+
1741
1763
#[ test]
1742
1764
fn starts_with_in_unicode ( ) {
1743
1765
assert ! ( !"├── Cargo.toml" . starts_with( "# " ) ) ;
0 commit comments