Replace sort implementations · model-checking/verify-rust-std@36af639 (original) (raw)

`@@ -34,7 +34,7 @@ macro_rules! do_test {

`

34

34

`}

`

35

35

``

36

36

`let v = $input.to_owned();

`

37

``

`-

let _ = std::panic::catch_unwind(move || {

`

``

37

`+

let _ = panic::catch_unwind(move || {

`

38

38

`let mut v = v;

`

39

39

`let mut panic_countdown = panic_countdown;

`

40

40

` v.$func(|a, b| {

`

`@@ -197,8 +197,7 @@ fn panic_safe() {

`

197

197

``

198

198

`let mut rng = test_rng();

`

199

199

``

200

``

`` -

// Miri is too slow (but still need to chain to make the types match)

``

201

``

`-

let lens = if cfg!(miri) { (1..10).chain(0..0) } else { (1..20).chain(70..MAX_LEN) };

`

``

200

`+

let lens = if cfg!(miri) { (1..10).chain(30..36) } else { (1..20).chain(70..MAX_LEN) };

`

202

201

`let moduli: &[u32] = if cfg!(miri) { &[5] } else { &[5, 20, 50] };

`

203

202

``

204

203

`for len in lens {

`

`@@ -294,15 +293,20 @@ fn test_sort() {

`

294

293

`}

`

295

294

`}

`

296

295

``

297

``

`-

// Sort using a completely random comparison function.

`

298

``

`-

// This will reorder the elements somehow, but won't panic.

`

299

``

`-

let mut v = [0; 500];

`

300

``

`-

for i in 0..v.len() {

`

``

296

`+

const ORD_VIOLATION_MAX_LEN: usize = 500;

`

``

297

`+

let mut v = [0; ORD_VIOLATION_MAX_LEN];

`

``

298

`+

for i in 0..ORD_VIOLATION_MAX_LEN {

`

301

299

` v[i] = i as i32;

`

302

300

`}

`

303

``

`-

v.sort_by(|_, _| *[Less, Equal, Greater].choose(&mut rng).unwrap());

`

``

301

+

``

302

`+

// Sort using a completely random comparison function. This will reorder the elements somehow,

`

``

303

`+

// it may panic but the original elements must still be present.

`

``

304

`+

let _ = panic::catch_unwind(move || {

`

``

305

`+

v.sort_by(|_, _| *[Less, Equal, Greater].choose(&mut rng).unwrap());

`

``

306

`+

});

`

``

307

+

304

308

` v.sort();

`

305

``

`-

for i in 0..v.len() {

`

``

309

`+

for i in 0..ORD_VIOLATION_MAX_LEN {

`

306

310

`assert_eq!(v[i], i as i32);

`

307

311

`}

`

308

312

``