pistoncore-input 1.0.1

A structure for user input
Documentation
extern crate input;
extern crate serde_json;

use input::*;

#[test]
fn test_encode_decode() {
    let test = |input| {
        let encoded = serde_json::to_string(&input).unwrap();
        let decoded: Input = serde_json::from_str(&encoded).unwrap();
        assert_eq!(decoded, input);
    };

    test(Input::Button(ButtonArgs {
        state: ButtonState::Press,
        button: Button::Keyboard(Key::A),
        scancode: None,
    }));
    test(Input::Button(ButtonArgs {
        state: ButtonState::Release,
        button: Button::Keyboard(Key::A),
        scancode: None,
    }));
    test(Input::Move(Motion::MouseCursor([0.0, 0.0])));
    test(Input::Text("hello".into()));
    test(Input::Resize(ResizeArgs {
        window_size: [0.0, 0.0],
        draw_size: [0, 0],
    }));
    test(Input::Focus(true));
    test(Input::Cursor(true));
    test(Input::Close(CloseArgs));

    let test = |l| {
        let encoded = serde_json::to_string(&l).unwrap();
        let decoded: Loop = serde_json::from_str(&encoded).unwrap();
        assert_eq!(decoded, l);
    };
    test(Loop::Render(RenderArgs {
        window_size: [0.0, 0.0],
        draw_size: [0, 0],
        ext_dt: 0.0,
    }));
    test(Loop::AfterRender(AfterRenderArgs));
    test(Loop::Update(UpdateArgs { dt: 0.0 }));
    test(Loop::Idle(IdleArgs { dt: 0.0 }));
}