/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.sesame.marketdata.scenarios; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import java.util.Set; import org.testng.annotations.Test; import com.opengamma.financial.currency.CurrencyPair; import com.opengamma.sesame.marketdata.FxRateId; import com.opengamma.util.test.TestGroup; @Test(groups = TestGroup.UNIT) public class CurrencyPairFilterTest { public void match() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPairFilter filter = new CurrencyPairFilter(pair); Set<? extends MatchDetails> matchDetails = filter.apply(FxRateId.of(pair)); assertEquals(1, matchDetails.size()); CurrencyPairMatchDetails currencyPairDetails = (CurrencyPairMatchDetails) matchDetails.iterator().next(); assertFalse(currencyPairDetails.isInverse()); } public void matchInverse() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPair inverse = pair.inverse(); CurrencyPairFilter filter = new CurrencyPairFilter(pair); Set<? extends MatchDetails> matchDetails = filter.apply(FxRateId.of(inverse)); assertEquals(1, matchDetails.size()); CurrencyPairMatchDetails currencyPairDetails = (CurrencyPairMatchDetails) matchDetails.iterator().next(); assertTrue(currencyPairDetails.isInverse()); } public void noMatch() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPairFilter filter = new CurrencyPairFilter(CurrencyPair.parse("EUR/CHF")); assertEquals(0, filter.apply(FxRateId.of(pair)).size()); } public void matchWithData() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPairFilter filter = new CurrencyPairFilter(pair); Set<? extends MatchDetails> matchDetails = filter.apply(FxRateId.of(pair), 1.1); assertEquals(1, matchDetails.size()); CurrencyPairMatchDetails currencyPairDetails = (CurrencyPairMatchDetails) matchDetails.iterator().next(); assertFalse(currencyPairDetails.isInverse()); } public void matchInverseWithData() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPair inverse = pair.inverse(); CurrencyPairFilter filter = new CurrencyPairFilter(pair); Set<? extends MatchDetails> matchDetails = filter.apply(FxRateId.of(inverse), 1.1); assertEquals(1, matchDetails.size()); CurrencyPairMatchDetails currencyPairDetails = (CurrencyPairMatchDetails) matchDetails.iterator().next(); assertTrue(currencyPairDetails.isInverse()); } public void noMatchWithData() { CurrencyPair pair = CurrencyPair.parse("EUR/USD"); CurrencyPairFilter filter = new CurrencyPairFilter(CurrencyPair.parse("EUR/CHF")); assertEquals(0, filter.apply(FxRateId.of(pair), 1.1).size()); } }