@Test
  public void textfield_usage_through_language_part3() {
    when(evaluator.componentType(id)).thenReturn(TextField);

    TextField textField = new TextField(evaluator, id);
    when(evaluator.maxLength(textField)).thenReturn(255);
    when(evaluator.label(textField)).thenReturn("myLabel");
    when(evaluator.value(textField)).thenReturn("");

    enter("SomeData", on(textField));

    verify(evaluator, atLeastOnce()).focusOn(textField);
    verify(evaluator, times(1)).reset(textField);
    verify(evaluator, times(1)).type("SomeData");
  }
  @Test
  public void textfield_usage_through_language_part1() {
    when(evaluator.componentType(id)).thenReturn(TextField);

    TextField textField = new TextField(evaluator, id);
    when(evaluator.label(textField)).thenReturn("myLabel");
    when(evaluator.value(textField)).thenReturn("myValue");

    assertThat(textField, has(label("myLabel")));
    assertThat(textField, has(value("myValue")));

    clickOn(textField);
    Keyboard.type("SomeData");

    verify(evaluator, times(1)).click(textField, Click.left);
    verify(evaluator, times(1)).type("SomeData");
  }
  @Test
  public void radio_usage_through_language() {
    when(evaluator.componentType(id)).thenReturn(Radio);

    Radio radio = new Radio(evaluator, id);
    when(evaluator.label(radio)).thenReturn("myLabel");
    when(evaluator.isChecked(radio)).thenReturn(false, true);

    assertThat(radio, is(not(checked())));

    check(radio);
    assertThat(radio, is(checked()));

    and(it(), has(label("myLabel")));

    assertThat(radio, has(label("myLabel")));

    verify(evaluator, times(1)).check(radio);
    verify(evaluator, times(2)).isChecked(radio);
  }
  @Test
  public void checkbox_usage_through_language() {
    when(evaluator.componentType(id)).thenReturn(CheckBox);

    CheckBox checkBox = new CheckBox(evaluator, id);
    when(evaluator.isChecked(checkBox)).thenReturn(false, true, false);
    when(evaluator.label(checkBox)).thenReturn("myLabel");

    assertThat(checkBox, is(not(checked())));

    check(checkBox);
    assertThat(checkBox, is(checked()));

    unCheck(checkBox);
    assertThat(checkBox, is(not(checked())));
    assertThat(checkBox, has(label("myLabel")));

    verify(evaluator, times(1)).check(checkBox);
    verify(evaluator, times(1)).unCheck(checkBox);
    verify(evaluator, times(3)).isChecked(checkBox);
  }
  @Test
  public void textfield_usage_through_language_part2() {
    when(evaluator.componentType(id)).thenReturn(TextField);

    TextField textField = new TextField(evaluator, id);
    when(evaluator.maxLength(textField)).thenReturn(255);
    when(evaluator.label(textField)).thenReturn("myLabel");
    when(evaluator.value(textField)).thenReturn("myValue");

    assertThat(textField, is(enabled()));
    and(not(disabled()));
    and(it(), visible());

    clickOn(textField);
    Mouse.clickOn(textField);

    type("data_1", into(textField));

    verify(evaluator, times(2)).click(textField, Click.left);
    verify(evaluator, times(2)).focusOn(any(Component.class));
    verify(evaluator, times(1)).type("data_1");
  }
  @Test
  public void test_keyboard_usage() {
    when(evaluator.componentType(id)).thenReturn(TextField);

    TextField textField = new TextField(evaluator, id);
    when(evaluator.maxLength(textField)).thenReturn(255);
    when(evaluator.label(textField)).thenReturn("label");
    when(evaluator.value(textField)).thenReturn("value");

    type("Some Data", on(textField));
    Keyboard.type("Other Data");
    Keyboard.keyDown(KeyModifier.SHIFT);
    Keyboard.release(KeyModifier.CONTROL);
    Keyboard.press(Key.F6);
    Keyboard.release();

    verify(evaluator, atLeastOnce()).focusOn(textField);
    verify(evaluator, times(1)).type("Some Data");
    verify(evaluator, times(1)).type("Other Data");
    verify(evaluator, times(1)).keyDown(KeyModifier.SHIFT);
    verify(evaluator, times(1)).release(KeyModifier.CONTROL);
    verify(evaluator, times(1)).press(Key.F6);
    verify(evaluator, times(1)).release();
  }