@Test
 public void testPayoff() {
   assertEquals(CALL.getPayoffFunction().getPayoff(DATA, null), 13, 0);
   assertEquals(CALL_REVERSE.getPayoffFunction().getPayoff(DATA, null), 0, 0);
   assertEquals(PUT.getPayoffFunction().getPayoff(DATA, null), 0, 0);
   assertEquals(PUT_REVERSE.getPayoffFunction().getPayoff(DATA, null), 13, 0);
 }
 @Test
 public void test() {
   assertEquals(PUT.getPeriodEnd(), PERIOD_END);
   assertFalse(PUT.isReverse());
   ExtremeSpreadOptionDefinition other =
       new ExtremeSpreadOptionDefinition(EXPIRY, false, PERIOD_END, false);
   assertEquals(other, PUT);
   assertEquals(other.hashCode(), PUT.hashCode());
   other =
       new ExtremeSpreadOptionDefinition(
           EXPIRY, false, new Expiry(DateUtils.getDateOffsetWithYearFraction(DATE, 0.15)), false);
   assertFalse(other.equals(PUT));
   other = new ExtremeSpreadOptionDefinition(EXPIRY, false, PERIOD_END, true);
   assertFalse(other.equals(PUT));
   assertEquals(PUT.getTimeFromPeriodEnd(EXPIRY.getExpiry()), 0.725, 0);
   assertEquals(PUT.getTimeFromPeriodEnd(DATE), -0.275, 0);
 }
 @Test
 public void testExercise() {
   assertFalse(PUT.getExerciseFunction().shouldExercise(DATA, null));
   assertFalse(PUT_REVERSE.getExerciseFunction().shouldExercise(DATA, null));
 }
 @Test(expectedExceptions = IllegalArgumentException.class)
 public void testNullDate() {
   PUT.getTimeFromPeriodEnd(null);
 }