Package st.gravel.support.compiler

Source Code of st.gravel.support.compiler.ReflectionTest

package st.gravel.support.compiler;

import static org.junit.Assert.assertEquals;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.junit.Before;
import org.junit.Test;

import st.gravel.core.Symbol;
import st.gravel.support.compiler.testtools.ClassBuilder;
import st.gravel.support.compiler.testtools.TestBootstrap;
import st.gravel.support.jvm.runtime.ImageBootstrapper;

public class ReflectionTest {
  @Before
  public void setUp() {
    TestBootstrap.getSingleton();
  }
  @Test
  public void testReflect() throws InstantiationException,
      IllegalAccessException, IllegalArgumentException,
      InvocationTargetException, NoSuchMethodException, SecurityException {

    Class classA = new ClassBuilder("ClassA_testReflect")
        .method("reflect: anObject" +
            "  ^Reflection reflect: anObject")
        .method("className: anObject" +
            "  ^(self reflect: anObject) classMirror name")
        .method("metaclassName: anObject" +
            "  ^(self reflect: anObject) classMirror meta name")
        .build();

    Object classAObj = classA.newInstance();
    Method className_ = classAObj.getClass().getMethod("className_", Object.class);
    Object result = className_.invoke(classAObj, new Object());
    assertEquals(Symbol.value("Object"), result);
    Method metaclassName_ = classAObj.getClass().getMethod("metaclassName_", Object.class);
    result = metaclassName_.invoke(classAObj, new Object());
    assertEquals("Object class", result);
  }


}
TOP

Related Classes of st.gravel.support.compiler.ReflectionTest

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.