subtr-actor 1.0.0

Rocket League replay transformer
Documentation
use super::*;

#[test]
fn find_in_direction_finds_first_match_after_current_index() {
    let items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let current_index = 4;
    let predicate = |&x: &i32| if x % 2 == 0 { Some(x) } else { None };

    let forward = find_in_direction(&items, current_index, SearchDirection::Forward, predicate);
    let backward = find_in_direction(&items, current_index, SearchDirection::Backward, predicate);

    assert_eq!(forward, Some((5, 6)));
    assert_eq!(backward, Some((3, 4)));
}

#[test]
fn find_in_direction_forward_handles_out_of_range_current_index() {
    let items = [1, 2, 3];

    let result = find_in_direction(&items, usize::MAX, SearchDirection::Forward, |item| {
        Some(*item)
    });

    assert_eq!(result, None);
}

#[test]
fn find_in_direction_backward_handles_out_of_range_current_index() {
    let items = [1, 2, 3];

    let result = find_in_direction(&items, usize::MAX, SearchDirection::Backward, |item| {
        Some(*item)
    });

    assert_eq!(result, Some((2, 3)));
}

#[test]
fn find_in_direction_remains_exclusive_of_current_index() {
    let items = [1, 2, 3];

    let forward = find_in_direction(&items, 1, SearchDirection::Forward, |item| Some(*item));
    let backward = find_in_direction(&items, 1, SearchDirection::Backward, |item| Some(*item));

    assert_eq!(forward, Some((2, 3)));
    assert_eq!(backward, Some((0, 1)));
}