/**
* Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.product.swap;
import static com.opengamma.strata.basics.currency.Currency.GBP;
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 java.util.Optional;
import java.util.OptionalDouble;
import org.testng.annotations.Test;
import com.opengamma.strata.basics.currency.CurrencyAmount;
import com.opengamma.strata.product.rate.FixedRateComputation;
/**
* Test {@link FixedRateStubCalculation}.
*/
@Test
public class FixedRateStubCalculationTest {
private static final CurrencyAmount GBP_P1000 = CurrencyAmount.of(GBP, 1000);
//-------------------------------------------------------------------------
public void test_ofFixedRate() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofFixedRate(0.025d);
assertEquals(test.getFixedRate(), OptionalDouble.of(0.025d));
assertEquals(test.getKnownAmount(), Optional.empty());
assertEquals(test.isFixedRate(), true);
assertEquals(test.isKnownAmount(), false);
}
public void test_ofKnownAmount() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofKnownAmount(GBP_P1000);
assertEquals(test.getFixedRate(), OptionalDouble.empty());
assertEquals(test.getKnownAmount(), Optional.of(GBP_P1000));
assertEquals(test.isFixedRate(), false);
assertEquals(test.isKnownAmount(), true);
}
//-------------------------------------------------------------------------
public void test_builder_invalid_fixedAndKnown() {
assertThrowsIllegalArg(() -> FixedRateStubCalculation.meta().builder()
.set(FixedRateStubCalculation.meta().fixedRate(), 0.025d)
.set(FixedRateStubCalculation.meta().knownAmount(), GBP_P1000)
.build());
}
//-------------------------------------------------------------------------
public void test_createRateComputation_NONE() {
FixedRateStubCalculation test = FixedRateStubCalculation.NONE;
assertEquals(test.createRateComputation(3d), FixedRateComputation.of(3d));
}
public void test_createRateComputation_fixedRate() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofFixedRate(0.025d);
assertEquals(test.createRateComputation(3d), FixedRateComputation.of(0.025d));
}
public void test_createRateComputation_knownAmount() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofKnownAmount(GBP_P1000);
assertEquals(test.createRateComputation(3d), KnownAmountRateComputation.of(GBP_P1000));
}
//-------------------------------------------------------------------------
public void coverage() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofFixedRate(0.025d);
coverImmutableBean(test);
FixedRateStubCalculation test2 = FixedRateStubCalculation.ofKnownAmount(GBP_P1000);
coverBeanEquals(test, test2);
}
public void test_serialization() {
FixedRateStubCalculation test = FixedRateStubCalculation.ofFixedRate(0.025d);
assertSerialization(test);
}
}