Package com.opengamma.util.beancompare

Source Code of com.opengamma.util.beancompare.BeanCompareTest

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.beancompare;

import static org.testng.AssertJUnit.assertTrue;

import java.util.Collections;
import java.util.Comparator;
import java.util.Map;

import org.joda.beans.Bean;
import org.joda.beans.MetaProperty;
import org.joda.beans.impl.flexi.FlexiBean;
import org.testng.annotations.Test;

import com.google.common.collect.ImmutableMap;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.TestGroup;

/**
*
*/
@Test(groups = TestGroup.UNIT)
public class BeanCompareTest {

  private static final String UNIQUE_ID = "uniqueId";
  private static final String EXTERNAL_ID_BUNDLE = "externalIdBundle";
  private static final String NAME = "name";

  @Test
  public void propertyComparators() {
    Comparator<Object> alwaysEqualComparator = new Comparator<Object>() {
      @Override
      public int compare(Object notUsed1, Object notUsed2) {
        return 0;
      }
    };
    UniqueId uid1 = UniqueId.of("uid", "123");
    UniqueId uid2 = UniqueId.of("uid", "321");
    ExternalIdBundle eid1 = ExternalIdBundle.of(ExternalId.of("eid1", "321"));
    ExternalIdBundle eid2 = ExternalIdBundle.of(ExternalId.of("eid2", "abc"));
    Bean bean1 = createBean(uid1, eid1, "name1");
    Bean bean2 = createBean(uid2, eid2, "name1");
    MetaProperty<Object> uniqueIdMeta = bean1.property(UNIQUE_ID).metaProperty();
    MetaProperty<Object> externalIdMeta = bean1.property(EXTERNAL_ID_BUNDLE).metaProperty();
    Map<MetaProperty<?>, Comparator<Object>> comparators =
        ImmutableMap.<MetaProperty<?>, Comparator<Object>>of(
            uniqueIdMeta, alwaysEqualComparator,
            externalIdMeta, alwaysEqualComparator);
    BeanCompare beanCompare = new BeanCompare(comparators, Collections.<Class<?>, Comparator<Object>>emptyMap());
    // same despite different IDs
    assertTrue(beanCompare.compare(bean1, bean2).isEmpty());
  }

  private static Bean createBean(UniqueId uniqueId, ExternalIdBundle idBundle, String name) {
    FlexiBean bean = new FlexiBean();
    bean.propertyDefine(UNIQUE_ID, UniqueId.class);
    bean.propertyDefine(EXTERNAL_ID_BUNDLE, ExternalIdBundle.class);
    bean.propertyDefine(NAME, String.class);
    bean.propertySet(UNIQUE_ID, uniqueId);
    bean.propertySet(EXTERNAL_ID_BUNDLE, idBundle);
    bean.propertySet(NAME, name);
    return bean;
  }
}
TOP

Related Classes of com.opengamma.util.beancompare.BeanCompareTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.