Split expression tests into different categories.
This commit is contained in:
@@ -400,8 +400,23 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public JsNode visitBinaryWithTypeRHSExpression(@NotNull JetBinaryExpressionWithTypeRHS expression,
|
public JsNode visitBinaryWithTypeRHSExpression(@NotNull JetBinaryExpressionWithTypeRHS expression,
|
||||||
@NotNull TranslationContext context) {
|
@NotNull TranslationContext context) {
|
||||||
|
// we actually do not care for types in js
|
||||||
return Translation.translateExpression(expression.getLeft(), context);
|
return Translation.translateExpression(expression.getLeft(), context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public JsNode visitBreakExpression(@NotNull JetBreakExpression expression,
|
||||||
|
@NotNull TranslationContext context) {
|
||||||
|
return new JsBreak();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public JsNode visitContinueExpression(@NotNull JetContinueExpression expression,
|
||||||
|
@NotNull TranslationContext context) {
|
||||||
|
return new JsContinue();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public abstract class AbstractExpressionTest extends TranslationTest {
|
||||||
|
|
||||||
|
private final String SUITE = "expression/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> generateFilenameList(String inputFile) {
|
||||||
|
return Arrays.asList(inputFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String suiteDirectoryName() {
|
||||||
|
return SUITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public class ConditionalTest extends AbstractExpressionTest {
|
||||||
|
final private static String MAIN = "conditional/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ifElseAsExpression() throws Exception {
|
||||||
|
testFooBoxIsTrue("ifElseAsExpression.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ifElse() throws Exception {
|
||||||
|
testFunctionOutput("if.kt", "foo", "box", 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: test fails due to isStatement issue, include when issue is solved or implement another solution
|
||||||
|
// @Test
|
||||||
|
// public void ifElseIf() throws Exception {
|
||||||
|
// testFunctionOutput("elseif.kt", "foo", "box", 5);
|
||||||
|
// }
|
||||||
|
}
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
package org.jetbrains.k2js.test;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Talanov Pavel
|
|
||||||
* <p/>
|
|
||||||
* This class tests basic language features and constructs such as constants, local variables, simple loops,
|
|
||||||
* conditional clauses etc.
|
|
||||||
*/
|
|
||||||
public final class ExpressionTest extends TranslationTest {
|
|
||||||
|
|
||||||
private static final String MAIN = "expression/";
|
|
||||||
|
|
||||||
protected String mainDirectory() {
|
|
||||||
return MAIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected List<String> generateFilenameList(String inputFile) {
|
|
||||||
return Arrays.asList(inputFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void currentTest() throws Exception {
|
|
||||||
testFooBoxIsTrue("test.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testAssign() throws Exception {
|
|
||||||
testFunctionOutput("assign.jet", "foo", "f", 2.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void namespaceProperties() throws Exception {
|
|
||||||
testFunctionOutput("localProperty.jet", "foo", "box", 50);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void comparison() throws Exception {
|
|
||||||
testFooBoxIsTrue("comparison.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void ifElse() throws Exception {
|
|
||||||
testFunctionOutput("if.kt", "foo", "box", 5);
|
|
||||||
}
|
|
||||||
//TODO: test fails due to isStatement issue, include when issue is solved or implement another solution
|
|
||||||
// @Test
|
|
||||||
// public void ifElseIf() throws Exception {
|
|
||||||
// testFunctionOutput("elseif.kt", "foo", "box", 5);
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whileSimpleTest() throws Exception {
|
|
||||||
testFooBoxIsTrue("while.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void doWhileSimpleTest() throws Exception {
|
|
||||||
testFooBoxIsTrue("doWhile.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void doWhileExecutesAtLeastOnce() throws Exception {
|
|
||||||
testFooBoxIsTrue("doWhile2.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void whileDoesntExecuteEvenOnceIfConditionIsFalse() throws Exception {
|
|
||||||
testFooBoxIsTrue("while2.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void stringConstant() throws Exception {
|
|
||||||
testFooBoxIsTrue("stringConstant.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void stringAssignment() throws Exception {
|
|
||||||
testFooBoxIsTrue("stringAssignment.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void functionUsedBeforeDeclaration() throws Exception {
|
|
||||||
testFooBoxIsTrue("functionUsedBeforeDeclaration.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void functionWithTwoParametersCall() throws Exception {
|
|
||||||
testFooBoxIsTrue("functionWithTwoParametersCall.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void prefixIntOperations() throws Exception {
|
|
||||||
testFooBoxIsTrue("prefixIntOperations.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void postfixIntOperations() throws Exception {
|
|
||||||
testFooBoxIsTrue("postfixIntOperations.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void notBoolean() throws Exception {
|
|
||||||
testFooBoxIsTrue("notBoolean.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void positiveAndNegativeNumbers() throws Exception {
|
|
||||||
testFooBoxIsTrue("positiveAndNegativeNumbers.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void ifElseAsExpression() throws Exception {
|
|
||||||
testFooBoxIsTrue("ifElseAsExpression.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public class FunctionTest extends AbstractExpressionTest {
|
||||||
|
|
||||||
|
final private static String MAIN = "function/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void functionUsedBeforeDeclaration() throws Exception {
|
||||||
|
testFooBoxIsTrue("functionUsedBeforeDeclaration.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void functionWithTwoParametersCall() throws Exception {
|
||||||
|
testFooBoxIsTrue("functionWithTwoParametersCall.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
* <p/>
|
||||||
|
* This class contains tests that do not fall in any particular category
|
||||||
|
* most probably because that functionality has very little support
|
||||||
|
*/
|
||||||
|
public class MiscTest extends AbstractExpressionTest {
|
||||||
|
final private static String MAIN = "misc/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void namespaceProperties() throws Exception {
|
||||||
|
testFunctionOutput("localProperty.jet", "foo", "box", 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public class OperationTest extends AbstractExpressionTest {
|
||||||
|
final private static String MAIN = "operation/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void prefixIntOperations() throws Exception {
|
||||||
|
testFooBoxIsTrue("prefixIntOperations.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void postfixIntOperations() throws Exception {
|
||||||
|
testFooBoxIsTrue("postfixIntOperations.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notBoolean() throws Exception {
|
||||||
|
testFooBoxIsTrue("notBoolean.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void positiveAndNegativeNumbers() throws Exception {
|
||||||
|
testFooBoxIsTrue("positiveAndNegativeNumbers.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void assign() throws Exception {
|
||||||
|
testFunctionOutput("assign.jet", "foo", "f", 2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void comparison() throws Exception {
|
||||||
|
testFooBoxIsTrue("comparison.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public class StringTest extends AbstractExpressionTest {
|
||||||
|
|
||||||
|
final private static String MAIN = "string/";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stringConstant() throws Exception {
|
||||||
|
testFooBoxIsTrue("stringConstant.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stringAssignment() throws Exception {
|
||||||
|
testFooBoxIsTrue("stringAssignment.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.jetbrains.k2js.test;
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
import org.jetbrains.k2js.K2JSTranslator;
|
import org.jetbrains.k2js.K2JSTranslator;
|
||||||
import org.junit.Before;
|
|
||||||
import org.mozilla.javascript.Context;
|
import org.mozilla.javascript.Context;
|
||||||
import org.mozilla.javascript.Scriptable;
|
import org.mozilla.javascript.Scriptable;
|
||||||
|
|
||||||
@@ -19,29 +18,34 @@ public abstract class TranslationTest {
|
|||||||
final private static String OUT = "out/";
|
final private static String OUT = "out/";
|
||||||
final private String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js";
|
final private String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js";
|
||||||
|
|
||||||
protected String testFilesDirectory;
|
|
||||||
protected String testCasesDirectory;
|
|
||||||
protected String outputDirectory;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUpClass() {
|
|
||||||
testCasesDirectory = CASES;
|
|
||||||
outputDirectory = OUT;
|
|
||||||
testFilesDirectory = TEST_FILES + mainDirectory();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract String mainDirectory();
|
protected abstract String mainDirectory();
|
||||||
|
|
||||||
protected String kotlinLibraryPath() {
|
protected String kotlinLibraryPath() {
|
||||||
return KOTLIN_JS_LIB;
|
return KOTLIN_JS_LIB;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getOutputDirectory() {
|
private String casesDirectoryName() {
|
||||||
return testFilesDirectory + outputDirectory;
|
return CASES;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getInputDirectory() {
|
private String outDirectoryName() {
|
||||||
return testFilesDirectory + testCasesDirectory;
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String testFilesPath() {
|
||||||
|
return TEST_FILES + suiteDirectoryName() + mainDirectory();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String suiteDirectoryName() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getOutputPath() {
|
||||||
|
return testFilesPath() + outDirectoryName();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getInputPath() {
|
||||||
|
return testFilesPath() + casesDirectoryName();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void testFunctionOutput(String filename, String namespaceName,
|
protected void testFunctionOutput(String filename, String namespaceName,
|
||||||
@@ -62,7 +66,7 @@ public abstract class TranslationTest {
|
|||||||
|
|
||||||
//TODO: refactor filename generation logic
|
//TODO: refactor filename generation logic
|
||||||
private String getOutputFilePath(String filename) {
|
private String getOutputFilePath(String filename) {
|
||||||
return getOutputDirectory() + convertToDotJsFile(filename);
|
return getOutputPath() + convertToDotJsFile(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String convertToDotJsFile(String filename) {
|
private String convertToDotJsFile(String filename) {
|
||||||
@@ -70,7 +74,7 @@ public abstract class TranslationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getInputFilePath(String filename) {
|
private String getInputFilePath(String filename) {
|
||||||
return getInputDirectory() + filename;
|
return getInputPath() + filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String cases(String filename) {
|
protected String cases(String filename) {
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package org.jetbrains.k2js.test;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Talanov Pavel
|
||||||
|
*/
|
||||||
|
public final class WhileTest extends AbstractExpressionTest {
|
||||||
|
|
||||||
|
private static final String MAIN = "while/";
|
||||||
|
|
||||||
|
protected String mainDirectory() {
|
||||||
|
return MAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whileSimpleTest() throws Exception {
|
||||||
|
testFooBoxIsTrue("while.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void doWhileSimpleTest() throws Exception {
|
||||||
|
testFooBoxIsTrue("doWhile.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void doWhileExecutesAtLeastOnce() throws Exception {
|
||||||
|
testFooBoxIsTrue("doWhile2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whileDoesntExecuteEvenOnceIfConditionIsFalse() throws Exception {
|
||||||
|
testFooBoxIsTrue("while2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
namespace foo
|
|
||||||
|
|
||||||
fun box() : Boolean {
|
|
||||||
val a = 2;
|
|
||||||
val b = 3;
|
|
||||||
var c = 4;
|
|
||||||
return (a < c)
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user