/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.collect.id;
import static com.opengamma.collect.id.MockIdentifiable.MOCK1;
import static com.opengamma.collect.id.MockIdentifiable.MOCK1_RESOLVED_MOCK2;
import static com.opengamma.collect.id.MockIdentifiable.MOCK2;
import static com.opengamma.collect.id.MockIdentifiable.STANDARD_ID_2;
import static org.assertj.core.api.Assertions.assertThat;
import org.testng.annotations.Test;
import com.google.common.reflect.TypeToken;
/**
* Tests for a link resolver.
*/
@Test
public class LinkResolverTest {
private static final LinkResolver RESOLVER = new LinkResolver() {
@SuppressWarnings("unchecked")
@Override
public <T extends IdentifiableBean> T resolve(StandardId identifier, TypeToken<T> targetType) {
assertThat(identifier).isEqualTo(STANDARD_ID_2);
assertThat(targetType).isEqualTo(TypeToken.of(MockIdentifiable.class));
return (T) MOCK2;
}
};
public void test_resolve_Class() {
assertThat(RESOLVER.resolve(STANDARD_ID_2, MockIdentifiable.class)).isEqualTo(MOCK2);
}
public void test_resolve_TypeToken() {
TypeToken<MockIdentifiable> token = TypeToken.of(MockIdentifiable.class);
assertThat(RESOLVER.resolve(STANDARD_ID_2, token)).isSameAs(MOCK2);
}
public void test_resolveAll_notResolvable() {
assertThat(RESOLVER.resolveLinksIn(MOCK1, "TargetIsNotResolvable", r -> r)).isSameAs(MOCK1);
}
public void test_resolveAll_targetIsResolvableAndNeedsResolving() {
MockIdentifiable test = MockIdentifiable.MOCK1_LINKED_MOCK2.resolveLinks(RESOLVER);
assertThat(test).isEqualTo(MOCK1_RESOLVED_MOCK2);
}
public void test_resolveAll_targetIsResolvableAndDoesNotNeedResolving() {
MockIdentifiable test = MOCK1_RESOLVED_MOCK2.resolveLinks(RESOLVER);
assertThat(test).isSameAs(MOCK1_RESOLVED_MOCK2);
}
}