### Question:
IntegerValue extends Value { @Override Value add (Value v) { if (v instanceof IntegerValue) { return new IntegerValue (intValue () + v.toIntegerValue ().intValue ()); } else if (v instanceof RealValue) { return toRealValue ().add (v); } else { throw newOperandException ("+"); } } IntegerValue(int value);   IntegerValue(String value); @Override String toString();  }### Answer:
@Test public void testAdd () { assertEquals ("0", mPositiveValue.add (mNegativeValue).toString ()); assertEquals ("123", mPositiveValue.add (mZeroValue).toString ()); assertEquals ("-123", mZeroValue.add (mNegativeValue).toString ()); assertEquals ("0,5", mZeroValue.add (mRealHalfValue).toString ()); try { mZeroValue.add (new BooleanValue (true)); fail ("no exception"); } catch (ExecutionException ee) { } }