/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.pricer.common; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.assertThrowsIllegalArg; import static com.opengamma.strata.collect.TestHelper.coverBeanEquals; import static com.opengamma.strata.collect.TestHelper.coverImmutableBean; import static org.testng.Assert.assertEquals; import org.joda.beans.BeanBuilder; import org.testng.annotations.Test; import com.opengamma.strata.collect.tuple.Pair; import com.opengamma.strata.market.option.LogMoneynessStrike; import com.opengamma.strata.market.option.MoneynessStrike; import com.opengamma.strata.market.option.SimpleStrike; import com.opengamma.strata.market.option.Strike; /** * Test {@link GenericVolatilitySurfaceYearFractionParameterMetadata}. */ @Test public class GenericVolatilitySurfaceYearFractionParameterMetadataTest { private static final double TIME_TO_EXPIRY = 1.5d; private static final LogMoneynessStrike STRIKE1 = LogMoneynessStrike.of(0.98d); private static final SimpleStrike STRIKE2 = SimpleStrike.of(1.05); public void test_of_withStrikeType() { GenericVolatilitySurfaceYearFractionParameterMetadata test = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME_TO_EXPIRY, STRIKE1); assertEquals(test.getIdentifier(), Pair.of(TIME_TO_EXPIRY, STRIKE1)); assertEquals(test.getLabel(), Pair.of(TIME_TO_EXPIRY, STRIKE1.getLabel()).toString()); assertEquals(test.getStrike(), STRIKE1); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); } public void test_of_withLabel() { Pair<Double, Strike> pair = Pair.of(TIME_TO_EXPIRY, STRIKE2); String label = "(1.5, 1.35)"; GenericVolatilitySurfaceYearFractionParameterMetadata test = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME_TO_EXPIRY, STRIKE2, label); assertEquals(test.getIdentifier(), pair); assertEquals(test.getLabel(), label); assertEquals(test.getStrike(), STRIKE2); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); } public void test_builder_noLabel() { BeanBuilder<? extends GenericVolatilitySurfaceYearFractionParameterMetadata> builder = GenericVolatilitySurfaceYearFractionParameterMetadata.meta().builder(); Pair<Double, Strike> pair = Pair.of(TIME_TO_EXPIRY, STRIKE1); builder.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().yearFraction(), TIME_TO_EXPIRY); builder.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().strike(), STRIKE1); GenericVolatilitySurfaceYearFractionParameterMetadata test = builder.build(); assertEquals(test.getIdentifier(), pair); assertEquals(test.getLabel(), Pair.of(TIME_TO_EXPIRY, STRIKE1.getLabel()).toString()); assertEquals(test.getStrike(), STRIKE1); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); } public void test_builder_withLabel() { BeanBuilder<? extends GenericVolatilitySurfaceYearFractionParameterMetadata> builder = GenericVolatilitySurfaceYearFractionParameterMetadata.meta().builder(); Pair<Double, Strike> pair = Pair.of(TIME_TO_EXPIRY, STRIKE1); String label = "(1.5, 0.75)"; builder.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().yearFraction(), TIME_TO_EXPIRY); builder.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().strike(), STRIKE1); builder.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().label(), label); GenericVolatilitySurfaceYearFractionParameterMetadata test = builder.build(); assertEquals(test.getIdentifier(), pair); assertEquals(test.getLabel(), label); assertEquals(test.getStrike(), STRIKE1); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); } public void test_builder_incomplete() { BeanBuilder<? extends GenericVolatilitySurfaceYearFractionParameterMetadata> builder1 = GenericVolatilitySurfaceYearFractionParameterMetadata.meta().builder(); assertThrowsIllegalArg(() -> builder1.build()); BeanBuilder<? extends GenericVolatilitySurfaceYearFractionParameterMetadata> builder2 = GenericVolatilitySurfaceYearFractionParameterMetadata.meta().builder(); builder2.set(GenericVolatilitySurfaceYearFractionParameterMetadata.meta().yearFraction(), TIME_TO_EXPIRY); assertThrowsIllegalArg(() -> builder2.build()); } //------------------------------------------------------------------------- public void coverage() { GenericVolatilitySurfaceYearFractionParameterMetadata test1 = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME_TO_EXPIRY, STRIKE1); coverImmutableBean(test1); GenericVolatilitySurfaceYearFractionParameterMetadata test2 = GenericVolatilitySurfaceYearFractionParameterMetadata.of(3d, MoneynessStrike.of(1.1d)); coverBeanEquals(test1, test2); } public void test_serialization() { GenericVolatilitySurfaceYearFractionParameterMetadata test = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME_TO_EXPIRY, STRIKE1); assertSerialization(test); } }