44 lines
914 B
Rust
44 lines
914 B
Rust
|
use rune::*;
|
||
|
|
||
|
#[test]
|
||
|
fn peek_works()
|
||
|
{
|
||
|
let mut it = vec![1, 2, 3].into_iter().lookahead();
|
||
|
assert_eq!(it.peek(0), Some(&1));
|
||
|
assert_eq!(it.peek(1), Some(&2));
|
||
|
assert_eq!(it.peek(2), Some(&3));
|
||
|
assert_eq!(it.peek(3), None);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn peek_mut_modifies_item()
|
||
|
{
|
||
|
let mut it = vec![10, 20, 30].into_iter().lookahead();
|
||
|
if let Some(x) = it.peek_mut(1)
|
||
|
{
|
||
|
*x += 100;
|
||
|
}
|
||
|
assert_eq!(it.next(), Some(10));
|
||
|
assert_eq!(it.next(), Some(120));
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn iterates_correctly()
|
||
|
{
|
||
|
let mut it = vec![1, 2, 3].into_iter().lookahead();
|
||
|
assert_eq!(it.next(), Some(1));
|
||
|
assert_eq!(it.next(), Some(2));
|
||
|
assert_eq!(it.next(), Some(3));
|
||
|
assert_eq!(it.next(), None);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn size_hint_accounts_for_buffer()
|
||
|
{
|
||
|
let mut it = vec![1, 2, 3, 4].into_iter().lookahead();
|
||
|
it.peek(2);
|
||
|
let (low, high) = it.size_hint();
|
||
|
assert!(low >= 4);
|
||
|
assert_eq!(high, Some(4));
|
||
|
}
|