/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.web.analytics.blotter;
import static org.testng.AssertJUnit.assertEquals;
import org.joda.beans.MetaBean;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.opengamma.financial.security.FinancialSecurity;
import com.opengamma.financial.security.fx.FXForwardSecurity;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class BeanHierarchyTest {
@Test
public void oneMetaBean() {
BeanHierarchy hierarchy = new BeanHierarchy(Sets.<MetaBean>newHashSet(FXForwardSecurity.meta()));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(FinancialSecurity.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(ManageableSecurity.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(Object.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(FXForwardSecurity.class));
}
@Test
public void multipleMetaBeansOneHierarchy() {
BeanHierarchy hierarchy = new BeanHierarchy(Sets.<MetaBean>newHashSet(ManageableSecurity.meta(), FXForwardSecurity.meta()));
assertEquals(ImmutableSet.of(ManageableSecurity.class, FXForwardSecurity.class), hierarchy.subtypes(Object.class));
assertEquals(ImmutableSet.of(ManageableSecurity.class, FXForwardSecurity.class), hierarchy.subtypes(ManageableSecurity.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(FXForwardSecurity.class));
}
@Test
public void abstractBean() {
BeanHierarchy hierarchy = new BeanHierarchy(Sets.<MetaBean>newHashSet(FinancialSecurity.meta(), FXForwardSecurity.meta()));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(Object.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(ManageableSecurity.class));
assertEquals(ImmutableSet.of(FXForwardSecurity.class), hierarchy.subtypes(FinancialSecurity.class));
}
}