@Test public void testSelect() { Select<String> select = new Select<>("name", KEYS); assertSame(KEYS, select.getKeyList()); assertEquals(0, select.getRows()); select.setRows(1); assertEquals(1, select.getRows()); assertSame(select, select.toFocusControl()); assertFalse(select.useOptionGroups()); select.setUseOptionGroups(true); assertTrue(select.useOptionGroups()); select.setUseOptionGroups(false); assertFalse(select.useOptionGroups()); assertEquals(-1, select.getSelectedIndex()); assertEquals(null, select.getSelectedText()); when(request.getParameter(select.getName())).thenReturn(null); assertTrue(select.read(request)); select.setRequired(true); assertFalse(select.read(request)); when(request.getParameter(select.getName())).thenReturn("a"); assertTrue(select.read(request)); assertEquals("a", select.getValue()); when(request.getParameter(select.getName())).thenReturn("x"); assertFalse(select.read(request)); assertNull(select.getValue()); assertEquals("x", select.getErrorValue()); Select<String> select2 = new Select<>("name2", KeyLists.<String>empty()); assertOut(select2, "<select name='name2'>\n\t<option value=''></option>\n</select>"); select2.removeDefaultOption(); select2.setDisabled(); select2.setRows(2); assertOut(select2, "<select name='name2' size='2' disabled>\n</select>"); }