### Question:
BindingTextBox extends AbstractRestrictedEntryTextBox { @Override public boolean isValidValue(String value, boolean isOnFocusLost) { if (value == null) { return true; } final char[] chars = value.toCharArray(); for (int i = 0; i < chars.length; i++) { final char c = chars[i]; if (i == 0) { if (c == '$') { continue; } else if (!Unicode.isLetter(c)) { return false; } } else if (!(Character.isDigit(c) || Unicode.isLetter(c))) { return false; } } return true; }  @Override boolean isValidValue(String value,
                                boolean isOnFocusLost);  }### Answer:
@Test public void testIsValidValueWhiteSpaceStart() throws Exception { assertFalse(textBox.isValidValue(" abcd", false)); }
@Test public void testIsValidValueWhiteSpaceEnd() throws Exception { assertFalse(textBox.isValidValue("abcd ", false)); }
@Test public void testIsValidValueWhiteSpaceMiddle() throws Exception { assertFalse(textBox.isValidValue("abcd abcd", false)); }
@Test public void testIsValidValueSpecialCharacters() throws Exception { assertFalse(textBox.isValidValue("abcd%!@*()&^abcd", false)); }
@Test public void testIsValidValueStartWithNumber() throws Exception { assertFalse(textBox.isValidValue("1abcd ", false)); }
@Test public void testIsValidValue() throws Exception { assertTrue(textBox.isValidValue("aBCd12", false)); }
@Test public void testIsValidValueWithSpecialStart() throws Exception { assertTrue(textBox.isValidValue("$a33bcd", false)); }