use wasm_bindgen_test::*;
use web_sys::HtmlOptionElement;

#[wasm_bindgen_test]
fn test_option_element() {
    let option = HtmlOptionElement::new_using_text_and_value_and_default_selected_and_selected(
      "option_text",
      "option_value",
      false,
      true
    ).unwrap();

    option.set_disabled(true);
    assert_eq!(option.disabled(), true, "Option should be disabled after we set it to be disabled.");

    option.set_disabled(false);
    assert_eq!(option.disabled(), false, "Option should not be disabled after we set it to be not-disabled.");

    assert!(option.form().is_none(), "Our option should not be associated with a form.");

    option.set_label("Well this truly is a neat option");
    assert_eq!(option.label(), "Well this truly is a neat option", "Option should have the label we gave it.");

    option.set_default_selected(true);
    assert_eq!(option.default_selected(), true, "Option should be default_selected after we set it to be default_selected.");

    option.set_default_selected(false);
    assert_eq!(option.default_selected(), false, "Option should not be default_selected after we set it to be not default_selected.");

    option.set_selected(true);
    assert_eq!(option.selected(), true, "Option should be selected after we set it to be selected.");

    option.set_selected(false);
    assert_eq!(option.selected(), false, "Option should not be selected after we set it to be not selected.");

    option.set_value("tomato");
    assert_eq!(option.value(), "tomato", "Option should have the value we gave it.");

    option.set_text("potato");
    assert_eq!(option.text(), "potato", "Option should have the text we gave it.");

    assert_eq!(option.index(), 0, "This should be the first option, since there are no other known options.");
}
