J2K ScriptGenTest: convert and prettify
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,88 +14,78 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.codegen;
|
package org.jetbrains.kotlin.codegen
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinition;
|
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProvider;
|
import org.jetbrains.kotlin.script.ScriptParameter
|
||||||
import org.jetbrains.kotlin.script.ScriptParameter;
|
import org.jetbrains.kotlin.scripts.SimpleParamsTestScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripts.SimpleParamsTestScriptDefinition;
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind;
|
import org.jetbrains.org.objectweb.asm.Opcodes
|
||||||
import org.jetbrains.org.objectweb.asm.Opcodes;
|
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
class ScriptGenTest : CodegenTestCase() {
|
||||||
import java.lang.reflect.Field;
|
companion object {
|
||||||
import java.lang.reflect.Method;
|
private val FIB_SCRIPT_DEFINITION = SimpleParamsTestScriptDefinition(
|
||||||
import java.util.Arrays;
|
".lang.kt",
|
||||||
import java.util.Collections;
|
listOf(ScriptParameter(Name.identifier("num"), DefaultBuiltIns.Instance.intType))
|
||||||
|
)
|
||||||
import static java.util.Collections.singletonList;
|
private val NO_PARAM_SCRIPT_DEFINITION = SimpleParamsTestScriptDefinition(
|
||||||
|
".kts",
|
||||||
public class ScriptGenTest extends CodegenTestCase {
|
emptyList<ScriptParameter>()
|
||||||
private static final KotlinScriptDefinition FIB_SCRIPT_DEFINITION =
|
)
|
||||||
new SimpleParamsTestScriptDefinition(
|
|
||||||
".lang.kt",
|
|
||||||
singletonList(new ScriptParameter(Name.identifier("num"), DefaultBuiltIns.getInstance().getIntType()))
|
|
||||||
);
|
|
||||||
private static final KotlinScriptDefinition NO_PARAM_SCRIPT_DEFINITION =
|
|
||||||
new SimpleParamsTestScriptDefinition(
|
|
||||||
".kts",
|
|
||||||
Collections.<ScriptParameter>emptyList()
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY);
|
|
||||||
KotlinScriptDefinitionProvider.getInstance(myEnvironment.getProject()).setScriptDefinitions(
|
|
||||||
Arrays.asList(FIB_SCRIPT_DEFINITION, NO_PARAM_SCRIPT_DEFINITION)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLanguage() throws Exception {
|
override fun setUp() {
|
||||||
loadFile("scriptCustom/fib.lang.kt");
|
super.setUp()
|
||||||
Class<?> aClass = generateClass("Fib");
|
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY)
|
||||||
Constructor constructor = aClass.getConstructor(int.class);
|
KotlinScriptDefinitionProvider.getInstance(myEnvironment.project).setScriptDefinitions(
|
||||||
Field result = aClass.getDeclaredField("result");
|
listOf(FIB_SCRIPT_DEFINITION, NO_PARAM_SCRIPT_DEFINITION)
|
||||||
result.setAccessible(true);
|
)
|
||||||
Object script = constructor.newInstance(5);
|
|
||||||
assertEquals(8, result.get(script));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLanguageWithPackage() throws Exception {
|
fun testLanguage() {
|
||||||
loadFile("scriptCustom/fibwp.lang.kt");
|
loadFile("scriptCustom/fib.lang.kt")
|
||||||
Class<?> aClass = generateClass("test.Fibwp");
|
val aClass = generateClass("Fib")
|
||||||
Constructor constructor = aClass.getConstructor(int.class);
|
val constructor = aClass.getConstructor(Integer.TYPE)
|
||||||
Field result = aClass.getDeclaredField("result");
|
val result = aClass.getDeclaredField("result")
|
||||||
result.setAccessible(true);
|
result.isAccessible = true
|
||||||
Object script = constructor.newInstance(5);
|
val script = constructor.newInstance(5)
|
||||||
assertEquals(8, result.get(script));
|
assertEquals(8, result.get(script))
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDependentScripts() throws Exception {
|
fun testLanguageWithPackage() {
|
||||||
loadFiles("scriptCustom/fibwp.lang.kt", "scriptCustom/fibwprunner.kts");
|
loadFile("scriptCustom/fibwp.lang.kt")
|
||||||
Class<?> aClass = generateClass("Fibwprunner");
|
val aClass = generateClass("test.Fibwp")
|
||||||
Constructor constructor = aClass.getConstructor();
|
val constructor = aClass.getConstructor(Integer.TYPE)
|
||||||
Field result = aClass.getDeclaredField("result");
|
val result = aClass.getDeclaredField("result")
|
||||||
result.setAccessible(true);
|
result.isAccessible = true
|
||||||
Method resultMethod = aClass.getDeclaredMethod("getResult");
|
val script = constructor.newInstance(5)
|
||||||
assertTrue((resultMethod.getModifiers() & Opcodes.ACC_FINAL) != 0);
|
assertEquals(8, result.get(script))
|
||||||
assertTrue((resultMethod.getModifiers() & Opcodes.ACC_PUBLIC) != 0);
|
|
||||||
assertTrue((result.getModifiers() & Opcodes.ACC_PRIVATE) != 0);
|
|
||||||
Object script = constructor.newInstance();
|
|
||||||
assertEquals(8, result.get(script));
|
|
||||||
assertEquals(8, resultMethod.invoke(script));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testScriptWhereMethodHasClosure() throws Exception {
|
fun testDependentScripts() {
|
||||||
loadFile("scriptCustom/methodWithClosure.lang.kt");
|
loadFiles("scriptCustom/fibwp.lang.kt", "scriptCustom/fibwprunner.kts")
|
||||||
Class<?> aClass = generateClass("MethodWithClosure");
|
val aClass = generateClass("Fibwprunner")
|
||||||
Constructor constructor = aClass.getConstructor(int.class);
|
val constructor = aClass.getConstructor()
|
||||||
Object script = constructor.newInstance(239);
|
val result = aClass.getDeclaredField("result")
|
||||||
Method fib = aClass.getMethod("method");
|
result.isAccessible = true
|
||||||
Object invoke = fib.invoke(script);
|
val resultMethod = aClass.getDeclaredMethod("getResult")
|
||||||
assertEquals(239, ((Integer) invoke) / 2);
|
assertTrue(resultMethod.modifiers and Opcodes.ACC_FINAL != 0)
|
||||||
|
assertTrue(resultMethod.modifiers and Opcodes.ACC_PUBLIC != 0)
|
||||||
|
assertTrue(result.modifiers and Opcodes.ACC_PRIVATE != 0)
|
||||||
|
val script = constructor.newInstance()
|
||||||
|
assertEquals(8, result.get(script))
|
||||||
|
assertEquals(8, resultMethod.invoke(script))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testScriptWhereMethodHasClosure() {
|
||||||
|
loadFile("scriptCustom/methodWithClosure.lang.kt")
|
||||||
|
val aClass = generateClass("MethodWithClosure")
|
||||||
|
val constructor = aClass.getConstructor(Integer.TYPE)
|
||||||
|
val script = constructor.newInstance(239)
|
||||||
|
val fib = aClass.getMethod("method")
|
||||||
|
val invoke = fib.invoke(script)
|
||||||
|
assertEquals(239, invoke as Int / 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user