/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.data; import static com.opengamma.strata.basics.currency.Currency.CHF; import static com.opengamma.strata.basics.currency.Currency.EUR; import static com.opengamma.strata.basics.currency.Currency.GBP; import static com.opengamma.strata.basics.currency.Currency.USD; 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.testng.Assert.assertEquals; import org.testng.annotations.Test; import com.opengamma.strata.basics.currency.CurrencyPair; import com.opengamma.strata.basics.currency.FxRate; import com.opengamma.strata.data.FxRateId.Meta; /** * Test {@link FxRateId}. */ @Test public class FxRateIdTest { private static final ObservableSource OBS_SOURCE = ObservableSource.of("Test"); private static final CurrencyPair PAIR = CurrencyPair.of(GBP, USD); private static final CurrencyPair INVERSE = PAIR.inverse(); //------------------------------------------------------------------------- public void test_of_pair() { FxRateId test = FxRateId.of(PAIR); FxRateId inverse = FxRateId.of(INVERSE); assertEquals(test.getPair(), PAIR); assertEquals(inverse.getPair(), PAIR); assertEquals(test.getObservableSource(), ObservableSource.NONE); assertEquals(test.getMarketDataType(), FxRate.class); } public void test_of_currencies() { FxRateId test = FxRateId.of(GBP, USD); FxRateId inverse = FxRateId.of(USD, GBP); assertEquals(test.getPair(), PAIR); assertEquals(inverse.getPair(), PAIR); assertEquals(test.getObservableSource(), ObservableSource.NONE); assertEquals(test.getMarketDataType(), FxRate.class); } //------------------------------------------------------------------------- public void test_of_pairAndSource() { FxRateId test = FxRateId.of(PAIR, OBS_SOURCE); FxRateId inverse = FxRateId.of(INVERSE); assertEquals(test.getPair(), PAIR); assertEquals(inverse.getPair(), PAIR); assertEquals(test.getObservableSource(), OBS_SOURCE); assertEquals(test.getMarketDataType(), FxRate.class); } public void test_of_currenciesAndSource() { FxRateId test = FxRateId.of(GBP, USD, OBS_SOURCE); FxRateId inverse = FxRateId.of(USD, GBP); assertEquals(test.getPair(), PAIR); assertEquals(inverse.getPair(), PAIR); assertEquals(test.getObservableSource(), OBS_SOURCE); assertEquals(test.getMarketDataType(), FxRate.class); } //------------------------------------------------------------------------- public void coverage() { FxRateId test = FxRateId.of(GBP, USD); coverImmutableBean(test); FxRateId test2 = FxRateId.of(EUR, CHF, OBS_SOURCE); coverBeanEquals(test, test2); } public void coverage_builder() { Meta meta = FxRateId.meta(); FxRateId test1 = meta.builder().setString(meta.pair(), "EUR/GBP").set(meta.observableSource(), OBS_SOURCE).build(); FxRateId test2 = meta.builder().setString(meta.pair().name(), "EUR/GBP").set(meta.observableSource(), OBS_SOURCE).build(); coverBeanEquals(test1, test2); } public void test_serialization() { FxRateId test = FxRateId.of(GBP, USD); assertSerialization(test); } }