Package org.hibernate.annotations.common.test.reflection.java

Source Code of org.hibernate.annotations.common.test.reflection.java.JavaXClassTest

package org.hibernate.annotations.common.test.reflection.java;

import java.io.Serializable;
import java.util.List;

import org.hibernate.annotations.common.reflection.ReflectionManager;
import org.hibernate.annotations.common.reflection.XAnnotatedElement;
import org.hibernate.annotations.common.reflection.XClass;
import org.hibernate.annotations.common.reflection.XProperty;
import org.hibernate.annotations.common.reflection.java.JavaReflectionManager;
import org.hibernate.annotations.common.test.reflection.java.generics.Dad;
import org.hibernate.annotations.common.test.reflection.java.generics.Grandpa;
import org.hibernate.annotations.common.test.reflection.java.generics.Language;
import org.hibernate.annotations.common.test.reflection.java.generics.Son;

/**
* @author Paolo Perrotta
*/
public class JavaXClassTest extends XAnnotatedElementTestCase {
  ReflectionManager factory = new JavaReflectionManager();

  XClass fatherAsSeenFromSon = factory.toXClass( Son.class ).getSuperclass();
  XClass grandpa = factory.toXClass( Grandpa.class );

  public void testHasAPointOfViewClass() {
    // Since Dad is an Entity, getting it through Son.getSuperclass() gives
    // us a view of properties from Dad with Son as a point of view.
    XClass sameView = factory.toXClass( Son.class ).getSuperclass();
    XClass differentView = factory.toXClass( Dad.class );
    assertSame( "Should be the same instance: same owner", sameView, fatherAsSeenFromSon );
    assertNotSame( "Should be a different instance: different owner", differentView, fatherAsSeenFromSon );
    assertEquals( ".equals() should show equality", sameView, differentView );
  }

  public void testHasAName() {
    assertSame( "org.hibernate.annotations.common.test.reflection.java.generics.Dad", fatherAsSeenFromSon.getName() );
  }

  public void testHasASuperclass() {
    assertEquals( grandpa, fatherAsSeenFromSon.getSuperclass() );
  }

  public void testSuperSuperClass() {
    assertEquals( factory.toXClass( Object.class ), grandpa.getSuperclass() );
    assertEquals( null, grandpa.getSuperclass().getSuperclass() );
  }

  public void testHasInterfaces() {
    XClass[] interfaces = fatherAsSeenFromSon.getSuperclass().getInterfaces();
    assertEquals( 2, interfaces.length );
    assertTrue( factory.equals( interfaces[0], Serializable.class ) );
    assertTrue( factory.equals( interfaces[1], Language.class ) );
  }

  public void testCanBeAssignableFromAnotherXClass() {
    assertFalse( fatherAsSeenFromSon.isAssignableFrom( grandpa ) );
    assertTrue( grandpa.isAssignableFrom( fatherAsSeenFromSon ) );
  }

  public void testExtractsPublicFieldsAsProperties() {
    List<XProperty> fieldProperties = fatherAsSeenFromSon.getDeclaredProperties( "field" );
    assertEquals( 1, fieldProperties.size() );
  }

  public void testExtractsPublicMethodsAsProperties() {
    List<XProperty> methodProperties = fatherAsSeenFromSon.getDeclaredProperties( "property" );
    assertEquals( 7, methodProperties.size() );
  }

  public void testCanBeAbstract() {
    assertFalse( fatherAsSeenFromSon.isAbstract() );
    assertTrue( factory.toXClass( Grandpa.class ).isAbstract() );
  }

  public void testCanBeAPrimitive() {
    assertFalse( fatherAsSeenFromSon.isPrimitive() );
    assertTrue( factory.toXClass( int.class ).isPrimitive() );
  }

  public void testCanBeAnEnum() {
    assertFalse( fatherAsSeenFromSon.isEnum() );
    assertTrue( factory.toXClass( Sex.class ).isEnum() );
  }

  @Override
  protected XAnnotatedElement getConcreteInstance() {
    return factory.toXClass( Dad.class );
  }

}
TOP

Related Classes of org.hibernate.annotations.common.test.reflection.java.JavaXClassTest

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.