@@ -1849,3 +1849,46 @@ fn test_truncate_front() {
18491849 v. truncate_front ( 5 ) ;
18501850 assert_eq ! ( v. as_slices( ) , ( [ 2 , 3 , 4 , 5 , 6 ] . as_slice( ) , [ ] . as_slice( ) ) ) ;
18511851}
1852+
1853+ #[ test]
1854+ fn test_extend_front ( ) {
1855+ let mut v = VecDeque :: new ( ) ;
1856+ v. extend_front ( 0 ..3 ) ;
1857+ assert_eq ! ( v, [ 2 , 1 , 0 ] ) ;
1858+ v. extend_front ( 3 ..6 ) ;
1859+ assert_eq ! ( v, [ 5 , 4 , 3 , 2 , 1 , 0 ] ) ;
1860+ v. prepend ( [ 1 ; 4 ] ) ;
1861+ assert_eq ! ( v, [ 1 , 1 , 1 , 1 , 5 , 4 , 3 , 2 , 1 , 0 ] ) ;
1862+
1863+ let mut v = VecDeque :: with_capacity ( 8 ) ;
1864+ let cap = v. capacity ( ) ;
1865+ v. extend ( 0 ..4 ) ;
1866+ v. truncate_front ( 2 ) ;
1867+ v. extend_front ( 4 ..8 ) ;
1868+ assert_eq ! ( v. as_slices( ) , ( [ 7 , 6 ] . as_slice( ) , [ 5 , 4 , 2 , 3 ] . as_slice( ) ) ) ;
1869+ assert_eq ! ( v. capacity( ) , cap) ;
1870+
1871+ let mut v = VecDeque :: new ( ) ;
1872+ v. extend_front ( [ ] ) ;
1873+ v. extend_front ( None ) ;
1874+ v. extend_front ( vec ! [ ] ) ;
1875+ v. prepend ( [ ] ) ;
1876+ v. prepend ( None ) ;
1877+ v. prepend ( vec ! [ ] ) ;
1878+ assert_eq ! ( v. capacity( ) , 0 ) ;
1879+ v. extend_front ( Some ( 123 ) ) ;
1880+ assert_eq ! ( v, [ 123 ] ) ;
1881+ }
1882+
1883+ #[ test]
1884+ fn test_extend_front_specialization ( ) {
1885+ let mut v = VecDeque :: with_capacity ( 4 ) ;
1886+ v. prepend ( vec ! [ 1 , 2 , 3 ] ) ;
1887+ assert_eq ! ( v, [ 1 , 2 , 3 ] ) ;
1888+ v. pop_front ( ) ;
1889+ v. prepend ( ( -4 ..2 ) . collect :: < Vec < _ > > ( ) ) ;
1890+ assert_eq ! ( v, ( -4 ..=3 ) . collect:: <Vec <_>>( ) ) ;
1891+ v. clear ( ) ;
1892+ v. extend_front ( vec ! [ 1 , 2 , 3 ] ) ;
1893+ assert_eq ! ( v, [ 3 , 2 , 1 ] ) ;
1894+ }
0 commit comments