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);
}
private void checkInterface(Class aClass, Class ifs) {
private static void checkInterface(Class aClass, Class ifs) {
for (Class anInterface : aClass.getInterfaces()) {
if (anInterface == ifs) return;
}
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() {
Codegens state = generateClassesInFile();
return loadRootNamespaceClass(state);
}
protected Class loadRootNamespaceClass(Codegens state) {
JetFile jetFile = (JetFile) myFixture.getFile();
final JetNamespace namespace = jetFile.getRootNamespace();
String fqName = NamespaceCodegen.getJVMClassName(namespace.getFQName()).replace("/", ".");
Codegens state = generateClassesInFile();
return loadClass(fqName, state);
}