/**
* Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.pricer.capfloor;
import static com.opengamma.strata.basics.index.IborIndices.GBP_LIBOR_3M;
import static com.opengamma.strata.collect.TestHelper.dateUtc;
import static org.testng.Assert.assertEquals;
import java.time.ZonedDateTime;
import java.util.Optional;
import org.testng.annotations.Test;
import com.opengamma.strata.basics.index.IborIndex;
import com.opengamma.strata.data.MarketDataName;
import com.opengamma.strata.market.ValueType;
import com.opengamma.strata.market.param.CurrencyParameterSensitivities;
import com.opengamma.strata.market.param.ParameterMetadata;
import com.opengamma.strata.market.param.ParameterPerturbation;
import com.opengamma.strata.market.sensitivity.PointSensitivities;
import com.opengamma.strata.product.common.PutCall;
/**
* Test {@link IborCapletFloorletVolatilities}.
*/
@Test
public class IborCapletFloorletVolatilitiesTest {
private static final ZonedDateTime DATE_TIME = dateUtc(2015, 8, 27);
//-------------------------------------------------------------------------
public void test_defaultMethods() {
IborCapletFloorletVolatilities test = new TestingIborCapletFloorletVolatilities();
assertEquals(test.getValuationDate(), DATE_TIME.toLocalDate());
assertEquals(test.volatility(DATE_TIME, 1, 2), 6d);
}
static class TestingIborCapletFloorletVolatilities implements IborCapletFloorletVolatilities {
@Override
public IborIndex getIndex() {
return GBP_LIBOR_3M;
}
@Override
public ZonedDateTime getValuationDateTime() {
return DATE_TIME;
}
@Override
public <T> Optional<T> findData(MarketDataName<T> name) {
return Optional.empty();
}
@Override
public double volatility(double expiry, double strike, double forward) {
return expiry * 2d;
}
@Override
public double price(double expiry, PutCall putCall, double strike, double forward, double volatility) {
throw new UnsupportedOperationException();
}
@Override
public double priceDelta(double expiry, PutCall putCall, double strike, double forward,
double volatility) {
throw new UnsupportedOperationException();
}
@Override
public double priceGamma(double expiry, PutCall putCall, double strike, double forward,
double volatility) {
throw new UnsupportedOperationException();
}
@Override
public double priceTheta(double expiry, PutCall putCall, double strike, double forward,
double volatility) {
throw new UnsupportedOperationException();
}
@Override
public double priceVega(double expiry, PutCall putCall, double strike, double forward,
double volatility) {
throw new UnsupportedOperationException();
}
@Override
public double relativeTime(ZonedDateTime date) {
return 3d;
}
@Override
public int getParameterCount() {
return 0;
}
@Override
public double getParameter(int parameterIndex) {
return 0;
}
@Override
public ParameterMetadata getParameterMetadata(int parameterIndex) {
return null;
}
@Override
public IborCapletFloorletVolatilitiesName getName() {
return null;
}
@Override
public ValueType getVolatilityType() {
return null;
}
@Override
public IborCapletFloorletVolatilities withParameter(int parameterIndex, double newValue) {
return null;
}
@Override
public IborCapletFloorletVolatilities withPerturbation(ParameterPerturbation perturbation) {
return null;
}
@Override
public CurrencyParameterSensitivities parameterSensitivity(PointSensitivities pointSensitivities) {
return null;
}
}
}