/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.market.curve; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.assertThrowsIllegalArg; import static com.opengamma.strata.collect.TestHelper.assertThrowsWithCause; import static com.opengamma.strata.collect.TestHelper.coverBeanEquals; import static com.opengamma.strata.collect.TestHelper.coverEnum; import static com.opengamma.strata.collect.TestHelper.coverImmutableBean; import static com.opengamma.strata.collect.TestHelper.date; import static org.testng.Assert.assertEquals; import java.time.LocalDate; import org.testng.annotations.Test; /** * Test {@link CurveNodeDate}. */ @Test public class CurveNodeDateTest { private static final LocalDate DATE1 = date(2015, 6, 30); private static final LocalDate DATE2 = date(2015, 7, 1); private static final LocalDate DATE3 = date(2015, 7, 2); //------------------------------------------------------------------------- public void test_END() { CurveNodeDate test = CurveNodeDate.END; assertEquals(test.isFixed(), false); assertEquals(test.isEnd(), true); assertEquals(test.isLastFixing(), false); assertEquals(test.getType(), CurveNodeDateType.END); assertThrowsWithCause(() -> test.getDate(), IllegalStateException.class); } public void test_LAST_FIXING() { CurveNodeDate test = CurveNodeDate.LAST_FIXING; assertEquals(test.isFixed(), false); assertEquals(test.isEnd(), false); assertEquals(test.isLastFixing(), true); assertEquals(test.getType(), CurveNodeDateType.LAST_FIXING); assertThrowsWithCause(() -> test.getDate(), IllegalStateException.class); } public void test_of() { CurveNodeDate test = CurveNodeDate.of(DATE1); assertEquals(test.isFixed(), true); assertEquals(test.isEnd(), false); assertEquals(test.isLastFixing(), false); assertEquals(test.getType(), CurveNodeDateType.FIXED); assertEquals(test.getDate(), DATE1); } public void test_builder_fixed() { CurveNodeDate test = CurveNodeDate.meta().builder() .set(CurveNodeDate.meta().type(), CurveNodeDateType.FIXED) .set(CurveNodeDate.meta().date(), DATE1) .build(); assertEquals(test.isFixed(), true); assertEquals(test.isEnd(), false); assertEquals(test.isLastFixing(), false); assertEquals(test.getType(), CurveNodeDateType.FIXED); assertEquals(test.getDate(), DATE1); } public void test_builder_incorrect_no_fixed_date() { assertThrowsIllegalArg(() -> CurveNodeDate.meta().builder() .set(CurveNodeDate.meta().type(), CurveNodeDateType.FIXED) .build()); } public void test_builder_incorrect_fixed_date() { assertThrowsIllegalArg(() -> CurveNodeDate.meta().builder() .set(CurveNodeDate.meta().type(), CurveNodeDateType.LAST_FIXING) .set(CurveNodeDate.meta().date(), DATE1) .build()); } //------------------------------------------------------------------------- public void test_calculate() { assertEquals(CurveNodeDate.of(DATE1).calculate(() -> DATE2, () -> DATE3), DATE1); assertEquals(CurveNodeDate.END.calculate(() -> DATE2, () -> DATE3), DATE2); assertEquals(CurveNodeDate.LAST_FIXING.calculate(() -> DATE2, () -> DATE3), DATE3); } //------------------------------------------------------------------------- public void coverage() { CurveNodeDate test = CurveNodeDate.of(DATE1); coverImmutableBean(test); CurveNodeDate test2 = CurveNodeDate.LAST_FIXING; coverBeanEquals(test, test2); coverEnum(CurveNodeDateType.class); } public void test_serialization() { CurveNodeDate test = CurveNodeDate.of(DATE1); assertSerialization(test); } }