### Question:
NumericTextBox extends AbstractRestrictedEntryTextBox { @Override public boolean isValidValue( String value, boolean isOnFocusLost ) { boolean isValid = VALID_NUMBER.test( value ); if ( !isValid ) { return isValid; } if ( !isOnFocusLost && "-".equals( value ) ) { return true; } try { @SuppressWarnings("unused") BigDecimal check = new BigDecimal( value ); } catch ( NumberFormatException nfe ) { isValid = ( "".equals( value ) && allowEmptyValue ); } return isValid; } NumericTextBox();  NumericTextBox( final boolean allowEmptyValue ); @Override boolean isValidValue( String value,
                                 boolean isOnFocusLost );  }### Answer:
@Test public void validInputIncludingEmpty() throws Exception { NumericTextBox numericTextBox = new NumericTextBox( true ); assertTrue( numericTextBox.isValidValue( "5", true ) ); assertTrue( numericTextBox.isValidValue( "", true ) ); assertTrue( numericTextBox.isValidValue( "23232", true ) ); assertTrue( numericTextBox.isValidValue( new BigDecimal( Integer.MAX_VALUE + 1 ).toString(), true ) ); assertFalse( numericTextBox.isValidValue( " ", true ) ); assertFalse( numericTextBox.isValidValue( "a", true ) ); assertFalse( numericTextBox.isValidValue( null, true ) ); assertFalse( numericTextBox.isValidValue( null, false ) ); }
@Test public void validInputNonEmpty() throws Exception { NumericTextBox numericTextBox = new NumericTextBox(); assertTrue( numericTextBox.isValidValue( "5", true ) ); assertFalse( numericTextBox.isValidValue( "", true ) ); }
@Test public void onLostFocusValue() throws Exception { NumericTextBox numericTextBox = new NumericTextBox(); assertTrue( numericTextBox.isValidValue( "-", false ) ); }