### Question:
DatePropertyValueDecoder implements IPropertyValueDecoder<Date> { @Override public Date decodeValue(String value) { try { return new Date(Long.parseLong(value) * 1000L); } catch (NumberFormatException e) { throw new IllegalArgumentException("Date property value must be numeric."); } } DatePropertyValueDecoder(); @Override Date decodeValue(String value); @Override List<Class<Date>> getSupportedTypes();  }### Answer:
@Test public void testNumericValue() { Date timestamp = decoder.decodeValue(TEST_VALUE); assertEquals(timestamp.getClass(), Date.class); assertEquals(timestamp, new Date(Long.parseLong(TEST_VALUE) * 1000L)); }
@Test(expected = IllegalArgumentException.class) public void testEmptyValue() { Date timestamp = decoder.decodeValue(""); }
@Test(expected = IllegalArgumentException.class) public void testNullValue() { Date timestamp = decoder.decodeValue(null); }
@Test(expected = IllegalArgumentException.class) public void testNonNumericValue() { Date timestamp = decoder.decodeValue("123abc"); }