/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.forex.calculator; import static org.testng.AssertJUnit.assertEquals; import org.testng.annotations.Test; import com.opengamma.analytics.financial.forex.definition.ForexDefinition; import com.opengamma.analytics.financial.forex.definition.ForexNonDeliverableForwardDefinition; import com.opengamma.analytics.financial.forex.definition.ForexNonDeliverableOptionDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionDigitalDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionSingleBarrierDefinition; import com.opengamma.analytics.financial.forex.definition.ForexOptionVanillaDefinition; import com.opengamma.analytics.financial.forex.definition.ForexSwapDefinition; import com.opengamma.analytics.financial.instrument.InstrumentDefinitionVisitorAdapter; import com.opengamma.util.test.TestGroup; /** * Tests the visitor of Forex definitions. */ @Test(groups = TestGroup.UNIT) public class ForexDefinitionVisitorTest { private static final ForexDefinition FX_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexDefinition(); private static final ForexSwapDefinition FX_SWAP_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexSwapDefinition(); private static final ForexOptionVanillaDefinition FX_OPTION_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexOptionVanillaDefinition(); private static final ForexOptionSingleBarrierDefinition FX_SINGLE_BARRIER_OPTION_DEFINITION = ForexInstrumentsDescriptionDataSet .createForexOptionSingleBarrierDefinition(); private static final ForexNonDeliverableForwardDefinition NDF_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexNonDeliverableForwardDefinition(); private static final ForexNonDeliverableOptionDefinition NDO_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexNonDeliverableOptionDefinition(); private static final ForexOptionDigitalDefinition FX_OPTION_DIGITAL_DEFINITION = ForexInstrumentsDescriptionDataSet.createForexOptionDigitalDefinition(); @SuppressWarnings("synthetic-access") private static final MyVisitor<Object> VISITOR = new MyVisitor<>(); @Test public void testVisitor() { final Object o = "G"; assertEquals(FX_DEFINITION.accept(VISITOR), "Forex1"); assertEquals(FX_DEFINITION.accept(VISITOR, o), "Forex2"); assertEquals(FX_SWAP_DEFINITION.accept(VISITOR), "ForexSwap1"); assertEquals(FX_SWAP_DEFINITION.accept(VISITOR, o), "ForexSwap2"); assertEquals(FX_OPTION_DEFINITION.accept(VISITOR), "ForexOptionVanilla1"); assertEquals(FX_OPTION_DEFINITION.accept(VISITOR, o), "ForexOptionVanilla2"); assertEquals(FX_SINGLE_BARRIER_OPTION_DEFINITION.accept(VISITOR, o), "ForexOptionSingleBarrier2"); assertEquals(FX_SINGLE_BARRIER_OPTION_DEFINITION.accept(VISITOR), "ForexOptionSingleBarrier1"); assertEquals(NDF_DEFINITION.accept(VISITOR), "ForexNonDeliverableForwardDefinition1"); assertEquals(NDF_DEFINITION.accept(VISITOR, o), "ForexNonDeliverableForwardDefinition2"); assertEquals(NDO_DEFINITION.accept(VISITOR), "ForexNonDeliverableOptionDefinition1"); assertEquals(NDO_DEFINITION.accept(VISITOR, o), "ForexNonDeliverableOptionDefinition2"); assertEquals(FX_OPTION_DIGITAL_DEFINITION.accept(VISITOR), "ForexOptionDigital1"); assertEquals(FX_OPTION_DIGITAL_DEFINITION.accept(VISITOR, o), "ForexOptionDigital2"); } private static class MyVisitor<T> extends InstrumentDefinitionVisitorAdapter<T, String> { @Override public String visitForexDefinition(final ForexDefinition fx, final T data) { return "Forex2"; } @Override public String visitForexDefinition(final ForexDefinition fx) { return "Forex1"; } @Override public String visitForexSwapDefinition(final ForexSwapDefinition fx, final T data) { return "ForexSwap2"; } @Override public String visitForexSwapDefinition(final ForexSwapDefinition fx) { return "ForexSwap1"; } @Override public String visitForexOptionVanillaDefinition(final ForexOptionVanillaDefinition fx, final T data) { return "ForexOptionVanilla2"; } @Override public String visitForexOptionVanillaDefinition(final ForexOptionVanillaDefinition fx) { return "ForexOptionVanilla1"; } @Override public String visitForexOptionSingleBarrierDefiniton(final ForexOptionSingleBarrierDefinition fx, final T data) { return "ForexOptionSingleBarrier2"; } @Override public String visitForexOptionSingleBarrierDefiniton(final ForexOptionSingleBarrierDefinition fx) { return "ForexOptionSingleBarrier1"; } @Override public String visitForexNonDeliverableForwardDefinition(final ForexNonDeliverableForwardDefinition ndf, final T data) { return "ForexNonDeliverableForwardDefinition2"; } @Override public String visitForexNonDeliverableForwardDefinition(final ForexNonDeliverableForwardDefinition ndf) { return "ForexNonDeliverableForwardDefinition1"; } @Override public String visitForexNonDeliverableOptionDefinition(final ForexNonDeliverableOptionDefinition ndo, final T data) { return "ForexNonDeliverableOptionDefinition2"; } @Override public String visitForexNonDeliverableOptionDefinition(final ForexNonDeliverableOptionDefinition ndo) { return "ForexNonDeliverableOptionDefinition1"; } @Override public String visitForexOptionDigitalDefinition(final ForexOptionDigitalDefinition fx, final T data) { return "ForexOptionDigital2"; } @Override public String visitForexOptionDigitalDefinition(final ForexOptionDigitalDefinition fx) { return "ForexOptionDigital1"; } } }