/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.target.resolver;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.Test;
import com.opengamma.engine.target.Primitive;
import com.opengamma.id.ExternalBundleIdentifiable;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.ExternalIdentifiable;
import com.opengamma.id.UniqueId;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.money.Currency;
import com.opengamma.util.money.UnorderedCurrencyPair;
import com.opengamma.util.test.TestGroup;
/**
* Test the primitive resolvers.
*/
@Test(groups = TestGroup.UNIT)
public class PrimitiveResolverTest {
public void testCurrencyResolver() {
final ObjectResolver<Currency> resolver = new CurrencyResolver();
assertEquals(resolver.resolveObject(Currency.GBP.getUniqueId(), VersionCorrection.LATEST), Currency.GBP);
assertEquals(resolver.resolveObject(UniqueId.of("Foo", "Bar"), VersionCorrection.LATEST), null);
}
public void testUnorderedCurrencyPairResolver() {
final ObjectResolver<UnorderedCurrencyPair> resolver = new UnorderedCurrencyPairResolver();
assertEquals(resolver.resolveObject(UnorderedCurrencyPair.of(Currency.GBP, Currency.USD).getUniqueId(), VersionCorrection.LATEST), UnorderedCurrencyPair.of(Currency.GBP, Currency.USD));
assertEquals(resolver.resolveObject(UniqueId.of("Foo", "Bar"), VersionCorrection.LATEST), null);
}
public void testPrimitiveResolver() {
final Resolver<?> resolver = new PrimitiveResolver();
assertEquals(resolver.resolveObject(UniqueId.of("Foo", "Bar"), VersionCorrection.LATEST), new Primitive(UniqueId.of("Foo", "Bar")));
final ExternalId[] eids = new ExternalId[] {ExternalId.of("Foo", "A"), ExternalId.of("Foo-", "A"), ExternalId.of("Foo\\", "A"), ExternalId.of("Foo", "A-B"), ExternalId.of("Foo-Bar", "A"),
ExternalId.of("Foo-Bar", "A-B"), ExternalId.of("Foo\\-Bar", "A\\B"), ExternalId.of("Foo\\\\Bar", "A\\\\B") };
for (ExternalId eid : eids) {
final UniqueId uid = resolver.resolveExternalId(eid.toBundle(), VersionCorrection.LATEST);
final Object o = resolver.resolveObject(uid, VersionCorrection.LATEST);
assertTrue(o instanceof ExternalIdentifiable);
assertEquals(((ExternalIdentifiable) o).getExternalId(), eid);
}
final UniqueId uid = resolver.resolveExternalId(ExternalIdBundle.of(eids), VersionCorrection.LATEST);
final Object o = resolver.resolveObject(uid, VersionCorrection.LATEST);
assertTrue(o instanceof ExternalBundleIdentifiable);
assertEquals(((ExternalBundleIdentifiable) o).getExternalIdBundle(), ExternalIdBundle.of(eids));
}
}