use webcore::value::Reference;
use webapi::event::{IEvent, IUiEvent, UiEvent, Event};
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "change")]
#[reference(subclass_of(Event))]
pub struct ChangeEvent( Reference );
impl IEvent for ChangeEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "input")]
#[reference(subclass_of(Event))]
pub struct InputEvent( Reference );
impl IEvent for InputEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "UIEvent")]
#[reference(event = "load")]
#[reference(subclass_of(Event, UiEvent))]
pub struct ResourceLoadEvent( Reference );
impl IEvent for ResourceLoadEvent {}
impl IUiEvent for ResourceLoadEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "UIEvent")]
#[reference(event = "abort")]
#[reference(subclass_of(Event, UiEvent))]
pub struct ResourceAbortEvent( Reference );
impl IEvent for ResourceAbortEvent {}
impl IUiEvent for ResourceAbortEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "UIEvent")]
#[reference(event = "error")]
#[reference(subclass_of(Event, UiEvent))]
pub struct ResourceErrorEvent( Reference );
impl IEvent for ResourceErrorEvent {}
impl IUiEvent for ResourceErrorEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "resize")]
#[reference(subclass_of(Event))]
pub struct ResizeEvent( Reference );
impl IEvent for ResizeEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "scroll")]
#[reference(subclass_of(Event))]
pub struct ScrollEvent( Reference );
impl IEvent for ScrollEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "readystatechange")]
#[reference(subclass_of(Event))]
pub struct ReadyStateChangeEvent( Reference );
impl IEvent for ReadyStateChangeEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "submit")]
#[reference(subclass_of(Event))]
pub struct SubmitEvent( Reference );
impl IEvent for SubmitEvent {}
#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
#[reference(instance_of = "Event")]
#[reference(event = "selectionchange")]
#[reference(subclass_of(Event))]
pub struct SelectionChangeEvent( Reference );
impl IEvent for SelectionChangeEvent {}
#[cfg(all(test, feature = "web_test"))]
mod tests {
use super::*;
use webcore::try_from::TryInto;
use webapi::event::ConcreteEvent;
#[test]
fn test_change_event() {
let event: ChangeEvent = js!(
return new Event( @{ChangeEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), ChangeEvent::EVENT_TYPE );
}
#[test]
fn test_input_event() {
let event: InputEvent = js!(
return new Event( @{InputEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), InputEvent::EVENT_TYPE );
}
#[test]
fn test_resource_load_event() {
let event: ResourceLoadEvent = js!(
return new UIEvent( @{ResourceLoadEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), ResourceLoadEvent::EVENT_TYPE );
}
#[test]
fn test_resource_abort_event() {
let event: ResourceAbortEvent = js!(
return new UIEvent( @{ResourceAbortEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), ResourceAbortEvent::EVENT_TYPE );
}
#[test]
fn test_scroll_event() {
let event: ScrollEvent = js!(
return new Event( @{ScrollEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), ScrollEvent::EVENT_TYPE );
}
#[test]
fn test_ready_state_change_event() {
let event: ReadyStateChangeEvent = js!(
return new Event( @{ReadyStateChangeEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), ReadyStateChangeEvent::EVENT_TYPE);
}
#[test]
fn test_submit_event() {
let event: SubmitEvent = js!(
return new Event( @{SubmitEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), SubmitEvent::EVENT_TYPE);
}
#[test]
fn test_selectionchange_event() {
let event: SelectionChangeEvent = js!(
return new Event( @{SelectionChangeEvent::EVENT_TYPE} );
).try_into().unwrap();
assert_eq!( event.event_type(), SelectionChangeEvent::EVENT_TYPE);
}
}