| 1469 | |
| 1470 | #[test] |
| 1471 | fn range() { |
| 1472 | let mut f = MapForest::<u32, f32>::new(); |
| 1473 | let mut m = Map::<u32, f32>::new(); |
| 1474 | |
| 1475 | for i in 10..20 { |
| 1476 | m.insert(i, i as f32, &mut f, &()); |
| 1477 | } |
| 1478 | |
| 1479 | assert_eq!( |
| 1480 | m.range(.., &f, &()).collect::<Vec<_>>(), |
| 1481 | vec![ |
| 1482 | (10, 10.0), |
| 1483 | (11, 11.0), |
| 1484 | (12, 12.0), |
| 1485 | (13, 13.0), |
| 1486 | (14, 14.0), |
| 1487 | (15, 15.0), |
| 1488 | (16, 16.0), |
| 1489 | (17, 17.0), |
| 1490 | (18, 18.0), |
| 1491 | (19, 19.0), |
| 1492 | ], |
| 1493 | ); |
| 1494 | |
| 1495 | assert_eq!( |
| 1496 | m.range(5..12, &f, &()).collect::<Vec<_>>(), |
| 1497 | vec![(10, 10.0), (11, 11.0)], |
| 1498 | ); |
| 1499 | |
| 1500 | assert_eq!( |
| 1501 | m.range(18..30, &f, &()).collect::<Vec<_>>(), |
| 1502 | vec![(18, 18.0), (19, 19.0)], |
| 1503 | ); |
| 1504 | |
| 1505 | assert_eq!( |
| 1506 | m.range(..13, &f, &()).collect::<Vec<_>>(), |
| 1507 | vec![(10, 10.0), (11, 11.0), (12, 12.0)], |
| 1508 | ); |
| 1509 | |
| 1510 | assert_eq!( |
| 1511 | m.range(18.., &f, &()).collect::<Vec<_>>(), |
| 1512 | vec![(18, 18.0), (19, 19.0)], |
| 1513 | ); |
| 1514 | |
| 1515 | assert_eq!( |
| 1516 | m.range(12..=15, &f, &()).collect::<Vec<_>>(), |
| 1517 | vec![(12, 12.0), (13, 13.0), (14, 14.0), (15, 15.0)], |
| 1518 | ); |
| 1519 | |
| 1520 | // Check when the query range is outside the entry range. |
| 1521 | assert_eq!(m.range(0..5, &f, &()).collect::<Vec<_>>(), vec![]); |
| 1522 | assert_eq!(m.range(30..40, &f, &()).collect::<Vec<_>>(), vec![]); |
| 1523 | |
| 1524 | // Check when the query range's start and end land in between entries. |
| 1525 | for i in 30..40 { |
| 1526 | if i % 2 == 0 { |
| 1527 | m.insert(i, i as f32, &mut f, &()); |
| 1528 | } |