| 551 | |
| 552 | #[test] |
| 553 | fn range_query() { |
| 554 | let mut tree = OrderStatTree::new(); |
| 555 | for i in 0u8..10 { |
| 556 | tree.insert(vec![i], vec![b'a' + i]); |
| 557 | } |
| 558 | |
| 559 | // Range [3, 6] (inclusive). |
| 560 | let range = tree.range(Some(&[3u8]), Some(&[6u8])); |
| 561 | assert_eq!(range.len(), 4); |
| 562 | assert_eq!(range[0].0, &[3u8]); |
| 563 | assert_eq!(range[3].0, &[6u8]); |
| 564 | |
| 565 | // Unbounded start. |
| 566 | let range = tree.range(None, Some(&[2u8])); |
| 567 | assert_eq!(range.len(), 3); // 0, 1, 2 |
| 568 | |
| 569 | // Unbounded end. |
| 570 | let range = tree.range(Some(&[8u8]), None); |
| 571 | assert_eq!(range.len(), 2); // 8, 9 |
| 572 | } |
| 573 | |
| 574 | #[test] |
| 575 | fn duplicate_scores_different_keys() { |