ClassGenTest.java 1.7 KB
Newer Older
1 2 3
package org.jetbrains.jet.codegen;

import java.lang.reflect.Method;
4
import java.util.List;
5 6 7 8 9 10 11

/**
 * @author yole
 */
public class ClassGenTest extends CodegenTestCase {
    public void testPSVMClass() throws Exception {
        loadFile("simpleClass.jet");
12 13 14
        System.out.println(generateToText());

        final Class aClass = loadClass("SimpleClass", generateClassesInFile());
15
        final Method[] methods = aClass.getDeclaredMethods();
16 17
        assertEquals(1, methods.length);
    }
18 19 20 21 22 23 24 25

    public void testArrayListInheritance() throws Exception {
        loadFile("inheritingFromArrayList.jet");
        System.out.println(generateToText());

        final Class aClass = loadClass("Foo", generateClassesInFile());
        checkInterface(aClass, List.class);
    }
M
Maxim Shafirov 已提交
26

27 28 29 30
    public void testArrayInheritance() throws Exception {
        loadFile("inheritance.jet");
        System.out.println(generateToText());

M
Maxim Shafirov 已提交
31
        assertEquals("OK", blackBox());
32
    }
33

34
    private static void checkInterface(Class aClass, Class ifs) {
35 36 37 38 39
        for (Class anInterface : aClass.getInterfaces()) {
            if (anInterface == ifs) return;
        }
        fail(aClass.getName() + " must have " + ifs.getName() + " in its interfaces");
    }
40 41 42

    public void testNewInstanceExplicitConstructor() throws Exception {
        loadFile("newInstanceDefaultConstructor.jet");
43
        System.out.println(generateToText());
44 45 46 47 48 49 50
        final Codegens codegens = generateClassesInFile();
        loadImplementationClass(codegens, "SimpleClass");
        Class ns = loadRootNamespaceClass(codegens);
        final Method method = findMethodByName(ns, "test");
        final Integer returnValue = (Integer) method.invoke(null);
        assertEquals(610, returnValue.intValue());
    }
51
}