test for stuff that Max has already implemented

This commit is contained in:
Dmitry Jemerov
2011-04-28 13:29:42 +02:00
parent 1562de1347
commit 6574cd98ed
4 changed files with 34 additions and 2 deletions
@@ -0,0 +1,8 @@
class SimpleClass() {
fun foo() = 610
}
fun test() {
val c = new SimpleClass()
return c.foo()
}
@@ -0,0 +1,10 @@
class SimpleClass {
this() {}
fun foo() = 610
}
fun test() {
val c = new SimpleClass()
return c.foo()
}
@@ -24,10 +24,20 @@ public class ClassGenTest extends CodegenTestCase {
checkInterface(aClass, List.class); checkInterface(aClass, List.class);
} }
private void checkInterface(Class aClass, Class ifs) { private static void checkInterface(Class aClass, Class ifs) {
for (Class anInterface : aClass.getInterfaces()) { for (Class anInterface : aClass.getInterfaces()) {
if (anInterface == ifs) return; if (anInterface == ifs) return;
} }
fail(aClass.getName() + " must have " + ifs.getName() + " in its interfaces"); fail(aClass.getName() + " must have " + ifs.getName() + " in its interfaces");
} }
public void testNewInstanceExplicitConstructor() throws Exception {
loadFile("newInstanceDefaultConstructor.jet");
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());
}
} }
@@ -60,10 +60,14 @@ public abstract class CodegenTestCase extends LightCodeInsightFixtureTestCase {
} }
protected Class generateNamespaceClass() { protected Class generateNamespaceClass() {
Codegens state = generateClassesInFile();
return loadRootNamespaceClass(state);
}
protected Class loadRootNamespaceClass(Codegens state) {
JetFile jetFile = (JetFile) myFixture.getFile(); JetFile jetFile = (JetFile) myFixture.getFile();
final JetNamespace namespace = jetFile.getRootNamespace(); final JetNamespace namespace = jetFile.getRootNamespace();
String fqName = NamespaceCodegen.getJVMClassName(namespace.getFQName()).replace("/", "."); String fqName = NamespaceCodegen.getJVMClassName(namespace.getFQName()).replace("/", ".");
Codegens state = generateClassesInFile();
return loadClass(fqName, state); return loadClass(fqName, state);
} }