try to fix VarArgTest

Accoring to spec array of class.getMethods() is not sorted, so we can't just call
getMethods()[0] to get desired method.
This commit is contained in:
Stepan Koltsov
2011-11-25 22:31:29 +04:00
parent 0bd0932282
commit a6eeb01b64
3 changed files with 23 additions and 8 deletions
@@ -7,10 +7,12 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.parsing.JetParsingTest;
import org.junit.Assert;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -157,7 +159,21 @@ public abstract class CodegenTestCase extends JetLiteFixture {
protected Method generateFunction() {
Class aClass = generateNamespaceClass();
try {
return aClass.getMethods()[0];
Method r = null;
for (Method method : aClass.getMethods()) {
if (method.getDeclaringClass().equals(Object.class)) {
continue;
}
if (r != null) {
throw new AssertionError("more then one public method in class " + aClass);
}
r = method;
}
if (r == null)
throw new AssertionError();
return r;
} catch (Error e) {
System.out.println(generateToText());
throw e;
@@ -487,7 +487,7 @@ public class NamespaceGenTest extends CodegenTestCase {
public void testTupleLiteral() throws Exception {
loadText("fun foo() = (1, \"foo\")");
// System.out.println(generateToText());
final Method main = generateFunction();
final Method main = generateFunction("foo");
Tuple2 tuple2 = (Tuple2) main.invoke(null);
assertEquals(1, tuple2._1);
assertEquals("foo", tuple2._2);
@@ -26,7 +26,7 @@ public class VarArgTest extends CodegenTestCase {
public void testIntArrayKotlinNoArgs () throws InvocationTargetException, IllegalAccessException {
loadText("fun test() = testf(); fun testf(vararg ts: Int) = ts");
// System.out.println(generateToText());
final Method main = generateFunction();
final Method main = generateFunction("test");
Object res = main.invoke(null);
assertTrue(((int[])res).length == 0);
}
@@ -34,8 +34,7 @@ public class VarArgTest extends CodegenTestCase {
public void testIntArrayKotlin () throws InvocationTargetException, IllegalAccessException {
loadText("fun test() = testf(239, 7); fun testf(vararg ts: Int) = ts");
// System.out.println(generateToText());
final Method main = generateFunction();
System.out.println(main.toString());
final Method main = generateFunction("test");
Object res = main.invoke(null);
assertTrue(((int[])res).length == 2);
assertTrue(((int[])res)[0] == 239);
@@ -45,7 +44,7 @@ public class VarArgTest extends CodegenTestCase {
public void testNullableIntArrayKotlin () throws InvocationTargetException, IllegalAccessException {
loadText("fun test() = testf(239.byt, 7.byt); fun testf(vararg ts: Byte?) = ts");
// System.out.println(generateToText());
final Method main = generateFunction();
final Method main = generateFunction("test");
Object res = main.invoke(null);
assertTrue(((Byte[])res).length == 2);
assertTrue(((Byte[])res)[0] == (byte)239);
@@ -55,7 +54,7 @@ public class VarArgTest extends CodegenTestCase {
public void testIntArrayKotlinObj () throws InvocationTargetException, IllegalAccessException {
loadText("fun test() = testf(\"239\"); fun testf(vararg ts: String) = ts");
// System.out.println(generateToText());
final Method main = generateFunction();
final Method main = generateFunction("test");
Object res = main.invoke(null);
assertTrue(((String[])res).length == 1);
assertTrue(((String[])res)[0].equals("239"));
@@ -64,7 +63,7 @@ public class VarArgTest extends CodegenTestCase {
public void testArrayT () throws InvocationTargetException, IllegalAccessException {
loadText("fun test() = _array(2, 4); fun <T> _array(vararg elements : T) = elements");
// System.out.println(generateToText());
final Method main = generateFunction();
final Method main = generateFunction("test");
Object res = main.invoke(null);
assertTrue(((Integer[])res).length == 2);
assertTrue(((Integer[])res)[0].equals(2));