Package com.orientechnologies.orient.object.enhancement

Source Code of com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandlerTest

package com.orientechnologies.orient.object.enhancement;

import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import com.orientechnologies.orient.object.db.OObjectDatabaseTx;

/**
* @author JN <a href="mailto:jn@brain-activit.com">Julian Neuhaus</a>
* @since 18.08.2014
*/
public class OObjectProxyMethodHandlerTest {
  private OObjectDatabaseTx   databaseTx;

  private Map<String, Object> fieldsAndThereDefaultValue;

  @BeforeClass
  protected void setUp() throws Exception {
    databaseTx = new OObjectDatabaseTx("memory:OObjectEnumLazyListTest");
    databaseTx.create();

    databaseTx.getEntityManager().registerEntityClass(EntityWithDifferentFieldTypes.class);

    fieldsAndThereDefaultValue = new HashMap<String, Object>();
    fieldsAndThereDefaultValue.put("byteField", Byte.valueOf("0"));
    fieldsAndThereDefaultValue.put("shortField", Short.valueOf("0"));
    fieldsAndThereDefaultValue.put("intField", 0);
    fieldsAndThereDefaultValue.put("longField", 0L);
    fieldsAndThereDefaultValue.put("floatField", 0.0f);
    fieldsAndThereDefaultValue.put("doubleField", 0.0d);
    fieldsAndThereDefaultValue.put("stringField", null);
    fieldsAndThereDefaultValue.put("booleanField", false);
    fieldsAndThereDefaultValue.put("objectField", null);
  }

  @AfterClass
  protected void tearDown() {
    databaseTx.drop();
  }

  @Test
  public void reloadTestForListsInTarget() {
    EntityWithDifferentFieldTypes targetObject = new EntityWithDifferentFieldTypes();

    List<EntityWithDifferentFieldTypes> entitieList = new ArrayList<EntityWithDifferentFieldTypes>();

    EntityWithDifferentFieldTypes listObject1 = new EntityWithDifferentFieldTypes();
    EntityWithDifferentFieldTypes listObject2 = new EntityWithDifferentFieldTypes();

    listObject1.setBooleanField(true);
    listObject1.setByteField(Byte.MIN_VALUE);
    listObject1.setDoubleField(1.1);
    listObject1.setFloatField(1f);
    listObject1.setIntField(13);
    listObject1.setLongField(10);
    listObject1.setShortField(Short.MIN_VALUE);
    listObject1.setStringField("TEST2");

    listObject2.setBooleanField(true);
    listObject2.setByteField(Byte.MIN_VALUE);
    listObject2.setDoubleField(1.1);
    listObject2.setFloatField(1f);
    listObject2.setIntField(13);
    listObject2.setLongField(10);
    listObject2.setShortField(Short.MIN_VALUE);
    listObject2.setStringField("TEST2");

    entitieList.add(listObject1);
    entitieList.add(listObject2);

    targetObject.setListOfEntityWithDifferentFieldTypes(entitieList);

    targetObject = this.databaseTx.save(targetObject);

    for (EntityWithDifferentFieldTypes entity : targetObject.getListOfEntityWithDifferentFieldTypes()) {
      assertTrue(entity.isBooleanField() == true);
      assertTrue(entity.getByteField() == Byte.MIN_VALUE);
      assertTrue(entity.getDoubleField() == 1.1);
      assertTrue(entity.getFloatField() == 1f);
      assertTrue(entity.getIntField() == 13);
      assertTrue(entity.getLongField() == 10);
      assertTrue(entity.getObjectField() == null);
      assertTrue(entity.getShortField() == Short.MIN_VALUE);
      assertTrue("TEST2".equals(entity.getStringField()));

      entity.setBooleanField(false);
      entity.setByteField(Byte.MAX_VALUE);
      entity.setDoubleField(3.1);
      entity.setFloatField(2f);
      entity.setIntField(15);
      entity.setLongField(11);
      entity.setShortField(Short.MAX_VALUE);
      entity.setStringField("TEST3");
      entity.setObjectField(new EntityWithDifferentFieldTypes());
    }

    for (EntityWithDifferentFieldTypes entity : targetObject.getListOfEntityWithDifferentFieldTypes()) {
      this.databaseTx.reload(entity);
      assertTrue(entity.isBooleanField() == true);
      assertTrue(entity.getByteField() == Byte.MIN_VALUE);
      assertTrue(entity.getDoubleField() == 1.1);
      assertTrue(entity.getFloatField() == 1f);
      assertTrue(entity.getIntField() == 13);
      assertTrue(entity.getLongField() == 10);
      assertTrue(entity.getObjectField() == null);
      assertTrue(entity.getShortField() == Short.MIN_VALUE);
      assertTrue("TEST2".equals(entity.getStringField()));
    }
  }

  @Test
  public void getDefaultValueForFieldTest() {
    OObjectProxyMethodHandler handler = new OObjectProxyMethodHandler(null);

    Method m = null;

    try {
      m = handler.getClass().getDeclaredMethod("getDefaultValueForField", Field.class);
      m.setAccessible(true);
    } catch (Exception e) {
      e.printStackTrace();
      fail("Unexpected exception");
    }

    assertTrue(m != null);

    EntityWithDifferentFieldTypes testEntity = new EntityWithDifferentFieldTypes();

    for (String fieldName : fieldsAndThereDefaultValue.keySet()) {
      Field field = null;

      try {
        field = testEntity.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
      } catch (Exception e) {
        e.printStackTrace();
        fail("Unexpected exception");
      }

      assertTrue(field != null);

      try {
        Object defaultValue = m.invoke(handler, field);
        Object expectedValue = fieldsAndThereDefaultValue.get(fieldName);

        if (expectedValue == null)
          assertTrue(defaultValue == null);
        else
          assertTrue(expectedValue.equals(defaultValue));
      } catch (Exception e) {
        e.printStackTrace();
        fail("Unexpected exception");
      }
    }
  }

  public class EntityWithDifferentFieldTypes {
    private byte                                byteField;
    private short                               shortField;
    private int                                 intField;
    private long                                longField;
    private float                               floatField;
    private double                              doubleField;
    private String                              stringField;
    private boolean                             booleanField;
    private EntityWithDifferentFieldTypes       objectField;

    private List<EntityWithDifferentFieldTypes> listOfEntityWithDifferentFieldTypes;

    public EntityWithDifferentFieldTypes() {
      super();
      this.listOfEntityWithDifferentFieldTypes = new ArrayList<EntityWithDifferentFieldTypes>();
    }

    public byte getByteField() {
      return byteField;
    }

    public void setByteField(byte byteField) {
      this.byteField = byteField;
    }

    public short getShortField() {
      return shortField;
    }

    public void setShortField(short shortField) {
      this.shortField = shortField;
    }

    public int getIntField() {
      return intField;
    }

    public void setIntField(int intField) {
      this.intField = intField;
    }

    public long getLongField() {
      return longField;
    }

    public void setLongField(long longField) {
      this.longField = longField;
    }

    public float getFloatField() {
      return floatField;
    }

    public void setFloatField(float floatField) {
      this.floatField = floatField;
    }

    public double getDoubleField() {
      return doubleField;
    }

    public void setDoubleField(double doubleField) {
      this.doubleField = doubleField;
    }

    public String getStringField() {
      return stringField;
    }

    public void setStringField(String stringField) {
      this.stringField = stringField;
    }

    public boolean isBooleanField() {
      return booleanField;
    }

    public void setBooleanField(boolean booleanField) {
      this.booleanField = booleanField;
    }

    public EntityWithDifferentFieldTypes getObjectField() {
      return objectField;
    }

    public void setObjectField(EntityWithDifferentFieldTypes objectField) {
      this.objectField = objectField;
    }

    public List<EntityWithDifferentFieldTypes> getListOfEntityWithDifferentFieldTypes() {
      return listOfEntityWithDifferentFieldTypes;
    }

    public void setListOfEntityWithDifferentFieldTypes(List<EntityWithDifferentFieldTypes> listOfEntityWithDifferentFieldTypes) {
      this.listOfEntityWithDifferentFieldTypes = listOfEntityWithDifferentFieldTypes;
    }
  }
}
TOP

Related Classes of com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandlerTest

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.