magma_windowing 0.1.0-alpha.3

Part of the Magma-API, which is the API of the Magma3D game engine. This is responsable for handling windows.
Documentation
use magma_app::App;
use magma_math::IVec2;
use magma_windowing::{window_event::*, *};

#[test]
fn create_window() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();
    app.world
        .get_component_mut::<Window>(window)
        .unwrap()
        .set_title("Hello World!");

    assert_eq!(
        app.world
            .get_component::<Window>(window)
            .unwrap()
            .changed_attr,
        true
    );
}

#[test]
fn resize_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowResized {
            window,
            width: 1280,
            height: 720,
        })
        .unwrap();
}

#[test]
fn redraw_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    // push event
    app.world.send_event(RedrawRequested).unwrap();
}

#[test]
fn window_created_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world.send_event(WindowCreated { window }).unwrap();
}

#[test]
fn close_requested_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowCloseRequested { window })
        .unwrap();
}

#[test]
fn closed_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world.send_event(WindowClosed { window }).unwrap();
}

#[test]
fn destroyed_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world.send_event(WindowDestroyed).unwrap();
}

#[test]
fn cursor_moved_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(CursorMoved {
            window,
            position: IVec2::new(16, 16),
        })
        .unwrap();
}

#[test]
fn cursor_entered_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world.send_event(CursorEntered { window }).unwrap();
}

#[test]
fn cursor_left_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world.send_event(CursorLeft { window }).unwrap();
}

#[test]
fn focused_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowFocused {
            window,
            focus: true,
        })
        .unwrap();
}

#[test]
fn occluded_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowOcclusion::Occluded { window })
        .unwrap();
}

#[test]
fn filednd_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(FileDragDrop::HoverCanceled { window })
        .unwrap();
}

#[test]
fn moved_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowMoved {
            window,
            position: IVec2::new(100, 200),
        })
        .unwrap();
}

#[test]
fn theme_changed_event() {
    let mut app = App::new();
    app.add_module(WindowingModule);

    let window = app.world.create_entity((Window::new(),)).unwrap();

    // push event
    app.world
        .send_event(WindowThemeChanged {
            window,
            theme: window::WindowTheme::Dark,
        })
        .unwrap();
}