use std::any::TypeId;
use pkecs_core::entity::Entities;
#[test]
fn empty_query() {
let mut entities = Entities::default();
let query_ref = entities.query::<Test>();
let entity_ref = query_ref.first();
assert!(entity_ref.is_none());
let mut query_mut = entities.query_mut::<Test>();
let entity_mut = query_mut.first_mut();
assert!(entity_mut.is_none());
let mut query_disjoint_mut = entities.query_disjoint_mut([&TypeId::of::<Test>()]);
let entity_disjoint_mut = query_disjoint_mut.first_mut::<Test>();
assert!(entity_disjoint_mut.is_none());
}
struct Test;
#[test]
fn can_spawn_entity() {
let mut entities = Entities::default();
entities.spawn(CanSpawn);
let query_ref = entities.query::<CanSpawn>();
let entity_ref = query_ref.first();
assert!(entity_ref.is_some());
}
struct CanSpawn;
#[test]
fn can_mutate_entity() {
const EXPECTED: i32 = 1;
let mut entities = Entities::default();
entities.spawn(CanMutate(0));
let mut query_mut = entities.query_mut::<CanMutate>();
let entity_mut = query_mut
.first_mut()
.unwrap();
entity_mut.0 = EXPECTED;
let query_ref = entities.query::<CanMutate>();
let entity_ref = query_ref
.first()
.unwrap();
assert_eq!(entity_ref.0, EXPECTED);
}
struct CanMutate(i32);
#[test]
fn can_query_and_query_indexed() {
let index = 1;
let mut entities = Entities::default();
entities.spawn(Test);
entities.spawn_indexed(index, Test);
let test_query = entities.query::<Test>();
let test = test_query.first();
assert!(test.is_some());
let test_query_indexed = entities.query_indexed::<i32, Test>();
let test_indexed = test_query_indexed.get(&index);
assert!(test_indexed.is_some());
}