@@ -110,6 +110,49 @@ fn test_append() {
110110 check_links ( & n) ;
111111}
112112
113+ #[ test]
114+ fn test_clone_from ( ) {
115+ // Short cloned from long
116+ {
117+ let v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
118+ let u = vec ! [ 8 , 7 , 6 , 2 , 3 , 4 , 5 ] ;
119+ let mut m = list_from ( & v) ;
120+ let n = list_from ( & u) ;
121+ m. clone_from ( & n) ;
122+ check_links ( & m) ;
123+ assert_eq ! ( m, n) ;
124+ for elt in u {
125+ assert_eq ! ( m. pop_front( ) , Some ( elt) )
126+ }
127+ }
128+ // Long cloned from short
129+ {
130+ let v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
131+ let u = vec ! [ 6 , 7 , 8 ] ;
132+ let mut m = list_from ( & v) ;
133+ let n = list_from ( & u) ;
134+ m. clone_from ( & n) ;
135+ check_links ( & m) ;
136+ assert_eq ! ( m, n) ;
137+ for elt in u {
138+ assert_eq ! ( m. pop_front( ) , Some ( elt) )
139+ }
140+ }
141+ // Two equal length lists
142+ {
143+ let v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
144+ let u = vec ! [ 9 , 8 , 1 , 2 , 3 ] ;
145+ let mut m = list_from ( & v) ;
146+ let n = list_from ( & u) ;
147+ m. clone_from ( & n) ;
148+ check_links ( & m) ;
149+ assert_eq ! ( m, n) ;
150+ for elt in u {
151+ assert_eq ! ( m. pop_front( ) , Some ( elt) )
152+ }
153+ }
154+ }
155+
113156#[ test]
114157fn test_insert_prev ( ) {
115158 let mut m = list_from ( & [ 0 , 2 , 4 , 6 , 8 ] ) ;
0 commit comments