@@ -33,48 +33,55 @@ pub fn bucket_sort(arr: &[usize]) -> Vec<usize> {
33
33
34
34
#[ cfg( test) ]
35
35
mod tests {
36
- use super :: super :: is_sorted;
37
36
use super :: * ;
37
+ use crate :: sorting:: have_same_elements;
38
+ use crate :: sorting:: is_sorted;
38
39
39
40
#[ test]
40
41
fn empty ( ) {
41
42
let arr: [ usize ; 0 ] = [ ] ;
43
+ let cloned = arr;
42
44
let res = bucket_sort ( & arr) ;
43
- assert ! ( is_sorted( & res) ) ;
45
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
44
46
}
45
47
46
48
#[ test]
47
49
fn one_element ( ) {
48
50
let arr: [ usize ; 1 ] = [ 4 ] ;
51
+ let cloned = arr;
49
52
let res = bucket_sort ( & arr) ;
50
- assert ! ( is_sorted( & res) ) ;
53
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
51
54
}
52
55
53
56
#[ test]
54
57
fn already_sorted ( ) {
55
- let arr: [ usize ; 3 ] = [ 10 , 9 , 105 ] ;
58
+ let arr: [ usize ; 3 ] = [ 10 , 19 , 105 ] ;
59
+ let cloned = arr;
56
60
let res = bucket_sort ( & arr) ;
57
- assert ! ( is_sorted( & res) ) ;
61
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
58
62
}
59
63
60
64
#[ test]
61
65
fn basic ( ) {
62
66
let arr: [ usize ; 4 ] = [ 35 , 53 , 1 , 0 ] ;
67
+ let cloned = arr;
63
68
let res = bucket_sort ( & arr) ;
64
- assert ! ( is_sorted( & res) ) ;
69
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
65
70
}
66
71
67
72
#[ test]
68
73
fn odd_number_of_elements ( ) {
69
74
let arr: Vec < usize > = vec ! [ 1 , 21 , 5 , 11 , 58 ] ;
75
+ let cloned = arr. clone ( ) ;
70
76
let res = bucket_sort ( & arr) ;
71
- assert ! ( is_sorted( & res) ) ;
77
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
72
78
}
73
79
74
80
#[ test]
75
81
fn repeated_elements ( ) {
76
82
let arr: Vec < usize > = vec ! [ 542 , 542 , 542 , 542 ] ;
83
+ let cloned = arr. clone ( ) ;
77
84
let res = bucket_sort ( & arr) ;
78
- assert ! ( is_sorted( & res) ) ;
85
+ assert ! ( is_sorted( & res) && have_same_elements ( & res , & cloned ) ) ;
79
86
}
80
87
}
0 commit comments