froql 0.1.0

an in memory query dsl
Documentation
use froql::{entity_view_deferred::EntityViewDeferred, world::World};

#[test]
#[allow(dead_code)]
fn debug_entity_view_mut() {
    #[derive(Debug)]
    struct Unit(String);
    #[derive(Debug)]
    struct Health(isize);
    struct Other(isize);
    enum Rel {}

    let mut world = World::new();
    world.register_component::<Unit>();
    world.register_component::<Health>();
    world.register_component::<Other>();
    world.register_relation::<Rel>();
    world.register_debug::<Unit>();
    world.register_debug::<Health>();

    let a = world.create_entity();

    let e = world
        .create()
        .add(Unit("Goblin".into()))
        .add(Health(10))
        .add(Other(10))
        .relate_to::<Rel>(a);

    if !cfg!(miri) {
        insta::assert_debug_snapshot!(e, @r#"
        EntityViewMut {
            id: EntityId(
                2,
            ),
            generation: EntityGeneration(
                1,
            ),
            Rel<origin> to: [
                1,
            ],
            components: [
                Unit(
                    "Goblin",
                ),
                Health(
                    10,
                ),
                Other { .. },
            ],
        }
        "#);
    } else {
        dbg!(e);
    }
}

#[test]
#[allow(dead_code)]
fn debug_entity_view() {
    #[derive(Debug)]
    struct Unit(String);
    #[derive(Debug)]
    struct Health(isize);
    enum Rel {}

    let mut world = World::new();
    world.register_component::<Unit>();
    world.register_component::<Health>();
    world.register_relation::<Rel>();
    world.register_debug::<Unit>();
    world.register_debug::<Health>();

    let a = world.create_entity();

    let e = world
        .create()
        .add(Unit("Goblin".into()))
        .add(Health(10))
        .relate_to::<Rel>(a)
        .entity;
    let e = EntityViewDeferred::new(&world, e);

    if !cfg!(miri) {
        insta::assert_debug_snapshot!(e, @r#"
        EntityViewDeferred {
            id: EntityId(
                2,
            ),
            generation: EntityGeneration(
                1,
            ),
            Rel<origin> to: [
                1,
            ],
            components: [
                Unit(
                    "Goblin",
                ),
                Health(
                    10,
                ),
            ],
        }
        "#);
    } else {
        dbg!(e);
    }
}