@@ -2096,3 +2096,76 @@ fn test_extend_from_within() {
2096
2096
2097
2097
assert_eq ! ( v, [ "a" , "b" , "c" , "b" , "c" , "a" , "b" ] ) ;
2098
2098
}
2099
+
2100
+ #[ test]
2101
+ fn test_vec_dedup_by ( ) {
2102
+ let mut vec: Vec < i32 > = vec ! [ 1 , -1 , 2 , 3 , 1 , -5 , 5 , -2 , 2 ] ;
2103
+
2104
+ vec. dedup_by ( |a, b| a. abs ( ) == b. abs ( ) ) ;
2105
+
2106
+ assert_eq ! ( vec, [ 1 , 2 , 3 , 1 , -5 , -2 ] ) ;
2107
+ }
2108
+
2109
+ #[ test]
2110
+ fn test_vec_dedup_empty ( ) {
2111
+ let mut vec: Vec < i32 > = Vec :: new ( ) ;
2112
+
2113
+ vec. dedup ( ) ;
2114
+
2115
+ assert_eq ! ( vec, [ ] ) ;
2116
+ }
2117
+
2118
+ #[ test]
2119
+ fn test_vec_dedup_one ( ) {
2120
+ let mut vec = vec ! [ 12i32 ] ;
2121
+
2122
+ vec. dedup ( ) ;
2123
+
2124
+ assert_eq ! ( vec, [ 12 ] ) ;
2125
+ }
2126
+
2127
+ #[ test]
2128
+ fn test_vec_dedup_multiple_ident ( ) {
2129
+ let mut vec = vec ! [ 12 , 12 , 12 , 12 , 12 , 11 , 11 , 11 , 11 , 11 , 11 ] ;
2130
+
2131
+ vec. dedup ( ) ;
2132
+
2133
+ assert_eq ! ( vec, [ 12 , 11 ] ) ;
2134
+ }
2135
+
2136
+ #[ test]
2137
+ fn test_vec_dedup_partialeq ( ) {
2138
+ #[ derive( Debug ) ]
2139
+ struct Foo ( i32 , i32 ) ;
2140
+
2141
+ impl PartialEq for Foo {
2142
+ fn eq ( & self , other : & Foo ) -> bool {
2143
+ self . 0 == other. 0
2144
+ }
2145
+ }
2146
+
2147
+ let mut vec = vec ! [ Foo ( 0 , 1 ) , Foo ( 0 , 5 ) , Foo ( 1 , 7 ) , Foo ( 1 , 9 ) ] ;
2148
+
2149
+ vec. dedup ( ) ;
2150
+ assert_eq ! ( vec, [ Foo ( 0 , 1 ) , Foo ( 1 , 7 ) ] ) ;
2151
+ }
2152
+
2153
+ #[ test]
2154
+ fn test_vec_dedup ( ) {
2155
+ let mut vec: Vec < bool > = Vec :: with_capacity ( 8 ) ;
2156
+ let mut template = vec. clone ( ) ;
2157
+
2158
+ for x in 0u8 ..255u8 {
2159
+ vec. clear ( ) ;
2160
+ template. clear ( ) ;
2161
+
2162
+ let iter = ( 0 ..8 ) . map ( move |bit| ( x >> bit) & 1 == 1 ) ;
2163
+ vec. extend ( iter) ;
2164
+ template. extend_from_slice ( & vec) ;
2165
+
2166
+ let ( dedup, _) = template. partition_dedup ( ) ;
2167
+ vec. dedup ( ) ;
2168
+
2169
+ assert_eq ! ( vec, dedup) ;
2170
+ }
2171
+ }
0 commit comments