dces 0.1.3

DCES entity component system
Documentation
use super::*;

#[derive(Copy, Clone, PartialEq, Debug)]
struct TestComponent;

#[test]
fn test_register_entity() {
    let mut ecm = EntityComponentManager::new();
    ecm.register_entity(5);
    assert!(ecm.entities.contains_key(&5));
    assert_eq!(1, ecm.entities.len());
}

#[test]
fn test_register_component() {
    let mut ecm = EntityComponentManager::new();
    ecm.register_entity(0);
    ecm.register_component(0, TestComponent);
    assert!(ecm.borrow_component::<TestComponent>(0) == Ok(&TestComponent))
}


#[test]
fn test_register_shared_component() {
    let mut ecm = EntityComponentManager::new();
    ecm.register_entity(0);
    ecm.register_component(0, TestComponent);
    ecm.register_entity(1);
    ecm.register_shared_component::<TestComponent>(1, 0);
    assert!(ecm.borrow_component::<TestComponent>(1) == Ok(&TestComponent))
}

#[test]
fn test_build() {
    let eb = EntityBuilder {
        entity: 0,
        entity_component_manager: &mut EntityComponentManager::new(),
        entity_container: &mut VecEntityContainer::default(),
    };

    assert_eq!(eb.build(), 0);
}

#[test]
fn test_with() {
    let mut ecm = EntityComponentManager::new();
    ecm.register_entity(0);

    {
        let eb = EntityBuilder {
            entity: 0,
            entity_component_manager: &mut ecm,
            entity_container: &mut VecEntityContainer::default(),
        };

        eb.with(TestComponent);
    }

    assert!(ecm.borrow_component::<TestComponent>(0) == Ok(&TestComponent))
}

#[test]
fn test_with_shared() {
    let mut ecm = EntityComponentManager::new();
    ecm.register_entity(0);

    {
        let eb = EntityBuilder {
            entity: 0,
            entity_component_manager: &mut ecm,
            entity_container: &mut VecEntityContainer::default(),
        };

        eb.with(TestComponent);
    }

    ecm.register_entity(1);

     {
        let eb = EntityBuilder {
            entity: 1,
            entity_component_manager: &mut ecm,
            entity_container: &mut VecEntityContainer::default(),
        };

        eb.with_shared::<TestComponent>(0);
    }

    assert!(ecm.borrow_component::<TestComponent>(1) == Ok(&TestComponent))
}