@@ -110,6 +110,49 @@ fn test_append() {
110
110
check_links ( & n) ;
111
111
}
112
112
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
+
113
156
#[ test]
114
157
fn test_insert_prev ( ) {
115
158
let mut m = list_from ( & [ 0 , 2 , 4 , 6 , 8 ] ) ;
0 commit comments