shipyard 0.5.0

Entity Component System
Documentation
use shipyard::*;

#[test]
fn clear_inserted() {
    let world = World::new();

    let (mut entities, mut usizes) = world.borrow::<(EntitiesViewMut, ViewMut<usize>)>().unwrap();
    usizes.track_all();

    let e0 = entities.add_entity(&mut usizes, 0);

    usizes.clear_all_inserted();

    usizes[e0] += 1;

    let e1 = entities.add_entity(&mut usizes, 1);
    let e2 = entities.add_entity(&mut usizes, 2);

    usizes.clear_inserted(e0);
    usizes.clear_inserted(e1);

    assert_eq!(usizes.is_inserted(e0), false);
    assert_eq!(usizes.is_modified(e0), true);
    assert_eq!(usizes.is_inserted(e1), false);
    assert_eq!(usizes.is_modified(e1), false);
    assert_eq!(usizes.is_inserted(e2), true);
    assert_eq!(usizes.is_modified(e2), false);
}

#[test]
fn clear_modified() {
    let world = World::new();

    let (mut entities, mut usizes) = world.borrow::<(EntitiesViewMut, ViewMut<usize>)>().unwrap();
    usizes.track_all();

    let e0 = entities.add_entity(&mut usizes, 0);
    let e1 = entities.add_entity(&mut usizes, 1);

    usizes.clear_all_inserted();

    usizes[e0] += 1;
    usizes[e1] += 1;

    let e2 = entities.add_entity(&mut usizes, 2);

    usizes.clear_modified(e0);
    usizes.clear_modified(e2);

    assert_eq!(usizes.is_inserted(e0), false);
    assert_eq!(usizes.is_modified(e0), false);
    assert_eq!(usizes.is_inserted(e1), false);
    assert_eq!(usizes.is_modified(e1), true);
    assert_eq!(usizes.is_inserted(e2), true);
    assert_eq!(usizes.is_modified(e2), false);
}

#[test]
fn clear_inserted_and_modified() {
    let world = World::new();

    let (mut entities, mut usizes) = world.borrow::<(EntitiesViewMut, ViewMut<usize>)>().unwrap();
    usizes.track_all();

    let e0 = entities.add_entity(&mut usizes, 0);

    usizes.clear_all_inserted();

    usizes[e0] += 1;

    let e1 = entities.add_entity(&mut usizes, 1);

    usizes.clear_inserted_and_modified(e0);
    usizes.clear_inserted_and_modified(e1);

    assert_eq!(usizes.is_inserted(e0), false);
    assert_eq!(usizes.is_modified(e0), false);
    assert_eq!(usizes.is_inserted(e1), false);
    assert_eq!(usizes.is_modified(e1), false);
}