/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.market.amount; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.coverBeanEquals; import static com.opengamma.strata.collect.TestHelper.coverImmutableBean; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.testng.annotations.Test; import com.opengamma.strata.basics.currency.Currency; import com.opengamma.strata.basics.currency.CurrencyAmount; import com.opengamma.strata.basics.currency.FxRate; import com.opengamma.strata.product.common.PayReceive; import com.opengamma.strata.product.swap.ResolvedSwapLeg; import com.opengamma.strata.product.swap.SwapLegType; import com.opengamma.strata.product.swap.SwapPaymentPeriod; /** * Test {@link SwapLegAmount}. */ @Test public class SwapLegAmountTest { private static final CurrencyAmount CURRENCY_AMOUNT = CurrencyAmount.of(Currency.USD, 123.45); public void test_of() { SwapPaymentPeriod pp = mock(SwapPaymentPeriod.class); when(pp.getCurrency()).thenReturn(Currency.GBP); ResolvedSwapLeg leg = ResolvedSwapLeg.builder() .type(SwapLegType.FIXED) .payReceive(PayReceive.PAY) .paymentPeriods(pp) .build(); SwapLegAmount legAmount = SwapLegAmount.of(leg, CurrencyAmount.of(Currency.GBP, 10)); SwapLegAmount test = legAmount.convertedTo(Currency.USD, FxRate.of(Currency.GBP, Currency.USD, 1.6)); assertThat(test.getAmount().getCurrency()).isEqualTo(Currency.USD); assertThat(test.getAmount().getAmount()).isEqualTo(16.0); assertThat(test.getPayReceive()).isEqualTo(legAmount.getPayReceive()); assertThat(test.getType()).isEqualTo(legAmount.getType()); assertThat(test.getCurrency()).isEqualTo(legAmount.getCurrency()); } //------------------------------------------------------------------------- public void convertedTo() { SwapLegAmount legAmount = SwapLegAmount.builder() .amount(CurrencyAmount.of(Currency.GBP, 10)) .payReceive(PayReceive.PAY) .type(SwapLegType.FIXED) .currency(Currency.GBP) .build(); SwapLegAmount convertedAmount = legAmount.convertedTo(Currency.USD, FxRate.of(Currency.GBP, Currency.USD, 1.6)); assertThat(convertedAmount.getAmount().getCurrency()).isEqualTo(Currency.USD); assertThat(convertedAmount.getAmount().getAmount()).isEqualTo(16.0); assertThat(convertedAmount.getPayReceive()).isEqualTo(legAmount.getPayReceive()); assertThat(convertedAmount.getType()).isEqualTo(legAmount.getType()); assertThat(convertedAmount.getCurrency()).isEqualTo(legAmount.getCurrency()); } //------------------------------------------------------------------------- public void coverage() { SwapLegAmount la1 = SwapLegAmount.builder() .amount(CURRENCY_AMOUNT) .payReceive(PayReceive.PAY) .type(SwapLegType.FIXED) .currency(Currency.EUR) .build(); coverImmutableBean(la1); SwapLegAmount la2 = SwapLegAmount.builder() .amount(CurrencyAmount.of(Currency.GBP, 10000)) .payReceive(PayReceive.RECEIVE) .type(SwapLegType.IBOR) .currency(Currency.GBP) .build(); coverBeanEquals(la1, la2); } public void test_serialization() { SwapLegAmount la = SwapLegAmount.builder() .amount(CURRENCY_AMOUNT) .payReceive(PayReceive.PAY) .type(SwapLegType.FIXED) .currency(Currency.EUR) .build(); assertSerialization(la); } }