diff options
| author | bors <bors@rust-lang.org> | 2018-03-28 02:41:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-03-28 02:41:28 +0000 |
| commit | 59ec9bfc66b86f04b50f00bb32839315f59252ec (patch) | |
| tree | 19b13ac2494f1e1b347ee8aae9c48150677434f3 /src/liballoc/tests | |
| parent | 9c9424de51da41fd3d1077ac7810276f8dc746fa (diff) | |
| parent | 605ea7c31f7341995c2d1ae12b4b33fe6bd908b5 (diff) | |
| download | rust-59ec9bfc66b86f04b50f00bb32839315f59252ec.tar.gz rust-59ec9bfc66b86f04b50f00bb32839315f59252ec.zip | |
Auto merge of #49406 - kennytm:rollup, r=kennytm
Rollup of 11 pull requests - Successful merges: #48639, #49223, #49333, #49369, #49381, #49395, #49399, #49401, #49417, #49202, #49426 - Failed merges:
Diffstat (limited to 'src/liballoc/tests')
| -rw-r--r-- | src/liballoc/tests/lib.rs | 1 | ||||
| -rw-r--r-- | src/liballoc/tests/slice.rs | 19 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/liballoc/tests/lib.rs b/src/liballoc/tests/lib.rs index bcd2ef27605..0a7e9a8be94 100644 --- a/src/liballoc/tests/lib.rs +++ b/src/liballoc/tests/lib.rs @@ -23,6 +23,7 @@ #![feature(pattern)] #![feature(placement_in_syntax)] #![feature(rand)] +#![feature(slice_sort_by_cached_key)] #![feature(splice)] #![feature(str_escape)] #![feature(string_retain)] diff --git a/src/liballoc/tests/slice.rs b/src/liballoc/tests/slice.rs index 3f679d81f08..99d9c51efc7 100644 --- a/src/liballoc/tests/slice.rs +++ b/src/liballoc/tests/slice.rs @@ -425,6 +425,14 @@ fn test_sort() { v.sort_by(|a, b| b.cmp(a)); assert!(v.windows(2).all(|w| w[0] >= w[1])); + // Sort in lexicographic order. + let mut v1 = orig.clone(); + let mut v2 = orig.clone(); + v1.sort_by_key(|x| x.to_string()); + v2.sort_by_cached_key(|x| x.to_string()); + assert!(v1.windows(2).all(|w| w[0].to_string() <= w[1].to_string())); + assert!(v1 == v2); + // Sort with many pre-sorted runs. let mut v = orig.clone(); v.sort(); @@ -477,7 +485,7 @@ fn test_sort_stability() { // the second item represents which occurrence of that // number this element is, i.e. the second elements // will occur in sorted order. - let mut v: Vec<_> = (0..len) + let mut orig: Vec<_> = (0..len) .map(|_| { let n = thread_rng().gen::<usize>() % 10; counts[n] += 1; @@ -485,16 +493,21 @@ fn test_sort_stability() { }) .collect(); - // only sort on the first element, so an unstable sort + let mut v = orig.clone(); + // Only sort on the first element, so an unstable sort // may mix up the counts. v.sort_by(|&(a, _), &(b, _)| a.cmp(&b)); - // this comparison includes the count (the second item + // This comparison includes the count (the second item // of the tuple), so elements with equal first items // will need to be ordered with increasing // counts... i.e. exactly asserting that this sort is // stable. assert!(v.windows(2).all(|w| w[0] <= w[1])); + + let mut v = orig.clone(); + v.sort_by_cached_key(|&(x, _)| x); + assert!(v.windows(2).all(|w| w[0] <= w[1])); } } } |
