|
| 1 | +use core::cmp::Ordering; |
1 | 2 | use core::num::NonZeroUsize;
|
2 | 3 |
|
3 | 4 | /// A wrapper struct that implements `Eq` and `Ord` based on the wrapped
|
@@ -371,11 +372,39 @@ fn test_by_ref() {
|
371 | 372 |
|
372 | 373 | #[test]
|
373 | 374 | fn test_is_sorted() {
|
| 375 | + // Tests on integers |
374 | 376 | assert!([1, 2, 2, 9].iter().is_sorted());
|
375 | 377 | assert!(![1, 3, 2].iter().is_sorted());
|
376 | 378 | assert!([0].iter().is_sorted());
|
377 |
| - assert!(std::iter::empty::<i32>().is_sorted()); |
| 379 | + assert!([0, 0].iter().is_sorted()); |
| 380 | + assert!(core::iter::empty::<i32>().is_sorted()); |
| 381 | + |
| 382 | + // Tests on floats |
| 383 | + assert!([1.0f32, 2.0, 2.0, 9.0].iter().is_sorted()); |
| 384 | + assert!(![1.0f32, 3.0f32, 2.0f32].iter().is_sorted()); |
| 385 | + assert!([0.0f32].iter().is_sorted()); |
| 386 | + assert!([0.0f32, 0.0f32].iter().is_sorted()); |
| 387 | + // Test cases with NaNs |
| 388 | + assert!([f32::NAN].iter().is_sorted()); |
| 389 | + assert!(![f32::NAN, f32::NAN].iter().is_sorted()); |
378 | 390 | assert!(![0.0, 1.0, f32::NAN].iter().is_sorted());
|
| 391 | + // Tests from <https://github.com/rust-lang/rust/pull/55045#discussion_r229689884> |
| 392 | + assert!(![f32::NAN, f32::NAN, f32::NAN].iter().is_sorted()); |
| 393 | + assert!(![1.0, f32::NAN, 2.0].iter().is_sorted()); |
| 394 | + assert!(![2.0, f32::NAN, 1.0].iter().is_sorted()); |
| 395 | + assert!(![2.0, f32::NAN, 1.0, 7.0].iter().is_sorted()); |
| 396 | + assert!(![2.0, f32::NAN, 1.0, 0.0].iter().is_sorted()); |
| 397 | + assert!(![-f32::NAN, -1.0, 0.0, 1.0, f32::NAN].iter().is_sorted()); |
| 398 | + assert!(![f32::NAN, -f32::NAN, -1.0, 0.0, 1.0].iter().is_sorted()); |
| 399 | + assert!(![1.0, f32::NAN, -f32::NAN, -1.0, 0.0].iter().is_sorted()); |
| 400 | + assert!(![0.0, 1.0, f32::NAN, -f32::NAN, -1.0].iter().is_sorted()); |
| 401 | + assert!(![-1.0, 0.0, 1.0, f32::NAN, -f32::NAN].iter().is_sorted()); |
| 402 | + |
| 403 | + // Tests for is_sorted_by |
| 404 | + assert!(![6, 2, 8, 5, 1, -60, 1337].iter().is_sorted()); |
| 405 | + assert!([6, 2, 8, 5, 1, -60, 1337].iter().is_sorted_by(|_, _| Some(Ordering::Less))); |
| 406 | + |
| 407 | + // Tests for is_sorted_by_key |
379 | 408 | assert!([-2, -1, 0, 3].iter().is_sorted());
|
380 | 409 | assert!(![-2i32, -1, 0, 3].iter().is_sorted_by_key(|n| n.abs()));
|
381 | 410 | assert!(!["c", "bb", "aaa"].iter().is_sorted());
|
|
0 commit comments