From 98f7c613330e900870434940ab32bd76aa4126d8 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 21 Oct 2016 04:19:39 +0300 Subject: [PATCH] Reuse JVM box tests for binary operations in JS, excluding those that can't pass now. --- .../box/binaryOp/compareWithBoxedDouble.kt | 2 + .../box/binaryOp/compareWithBoxedLong.kt | 2 + .../codegen/box/binaryOp/divisionByZero.kt | 2 + .../codegen/box/binaryOp/overflowInt.kt | 2 + .../kotlin/generators/tests/GenerateTests.kt | 4 + .../semantics/BinaryOpTestsGenerated.java | 139 ++++++++++++++++++ .../abstractClassesForGeneratedTests.kt | 2 + 7 files changed, 153 insertions(+) create mode 100644 js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BinaryOpTestsGenerated.java diff --git a/compiler/testData/codegen/box/binaryOp/compareWithBoxedDouble.kt b/compiler/testData/codegen/box/binaryOp/compareWithBoxedDouble.kt index 3c95aedf323..75fd3a2425c 100644 --- a/compiler/testData/codegen/box/binaryOp/compareWithBoxedDouble.kt +++ b/compiler/testData/codegen/box/binaryOp/compareWithBoxedDouble.kt @@ -1,3 +1,5 @@ +// TARGET_BACKEND: JVM +// reason - multifile tests are not supported in JS tests //FILE: Holder.java class Holder { diff --git a/compiler/testData/codegen/box/binaryOp/compareWithBoxedLong.kt b/compiler/testData/codegen/box/binaryOp/compareWithBoxedLong.kt index fdb16449a1a..4ae102ba72b 100644 --- a/compiler/testData/codegen/box/binaryOp/compareWithBoxedLong.kt +++ b/compiler/testData/codegen/box/binaryOp/compareWithBoxedLong.kt @@ -1,3 +1,5 @@ +// TARGET_BACKEND: JVM +// reason - multifile tests are not supported in JS tests //FILE: JavaClass.java class JavaClass { diff --git a/compiler/testData/codegen/box/binaryOp/divisionByZero.kt b/compiler/testData/codegen/box/binaryOp/divisionByZero.kt index c94a7fe39bb..5005b447ffd 100644 --- a/compiler/testData/codegen/box/binaryOp/divisionByZero.kt +++ b/compiler/testData/codegen/box/binaryOp/divisionByZero.kt @@ -1,3 +1,5 @@ +// TARGET_BACKEND: JVM +// reason - no ArithmeticException in JS fun box(): String { val a1 = 0 val a2 = try { 1 / 0 } catch(e: ArithmeticException) { 0 } diff --git a/compiler/testData/codegen/box/binaryOp/overflowInt.kt b/compiler/testData/codegen/box/binaryOp/overflowInt.kt index 4d5b899987f..35505298b89 100644 --- a/compiler/testData/codegen/box/binaryOp/overflowInt.kt +++ b/compiler/testData/codegen/box/binaryOp/overflowInt.kt @@ -1,3 +1,5 @@ +// TARGET_BACKEND: JVM +// reason - Int doesn't overflow in JS, TODO: include after KT-7733 is fixed fun box(): String { val i1: Int = Int.MAX_VALUE val i2 = i1 + 1 diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 06cb8812d22..5161e1a2ef9 100755 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -1209,6 +1209,10 @@ fun main(args: Array) { testClass() { model("codegen/box/typealias/", targetBackend = TargetBackend.JS) } + + testClass() { + model("codegen/box/binaryOp", targetBackend = TargetBackend.JS) + } } } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BinaryOpTestsGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BinaryOpTestsGenerated.java new file mode 100644 index 00000000000..b2acd104f54 --- /dev/null +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BinaryOpTestsGenerated.java @@ -0,0 +1,139 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.js.test.semantics; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/codegen/box/binaryOp") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class BinaryOpTestsGenerated extends AbstractBinaryOpTests { + @TestMetadata("compareWithBoxedDouble.kt") + public void ignoredCompareWithBoxedDouble() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/compareWithBoxedDouble.kt"); + doTest(fileName); + } + + @TestMetadata("compareWithBoxedLong.kt") + public void ignoredCompareWithBoxedLong() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/compareWithBoxedLong.kt"); + doTest(fileName); + } + + @TestMetadata("divisionByZero.kt") + public void ignoredDivisionByZero() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/divisionByZero.kt"); + doTest(fileName); + } + + @TestMetadata("overflowInt.kt") + public void ignoredOverflowInt() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/overflowInt.kt"); + doTest(fileName); + } + + public void testAllFilesPresentInBinaryOp() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/binaryOp"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("bitwiseOp.kt") + public void testBitwiseOp() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/bitwiseOp.kt"); + doTest(fileName); + } + + @TestMetadata("bitwiseOpAny.kt") + public void testBitwiseOpAny() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/bitwiseOpAny.kt"); + doTest(fileName); + } + + @TestMetadata("bitwiseOpNullable.kt") + public void testBitwiseOpNullable() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/bitwiseOpNullable.kt"); + doTest(fileName); + } + + @TestMetadata("call.kt") + public void testCall() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/call.kt"); + doTest(fileName); + } + + @TestMetadata("callAny.kt") + public void testCallAny() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/callAny.kt"); + doTest(fileName); + } + + @TestMetadata("callNullable.kt") + public void testCallNullable() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/callNullable.kt"); + doTest(fileName); + } + + @TestMetadata("intrinsic.kt") + public void testIntrinsic() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/intrinsic.kt"); + doTest(fileName); + } + + @TestMetadata("intrinsicAny.kt") + public void testIntrinsicAny() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/intrinsicAny.kt"); + doTest(fileName); + } + + @TestMetadata("intrinsicNullable.kt") + public void testIntrinsicNullable() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/intrinsicNullable.kt"); + doTest(fileName); + } + + @TestMetadata("kt11163.kt") + public void testKt11163() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/kt11163.kt"); + doTest(fileName); + } + + @TestMetadata("kt6747_identityEquals.kt") + public void testKt6747_identityEquals() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/kt6747_identityEquals.kt"); + doTest(fileName); + } + + @TestMetadata("overflowChar.kt") + public void testOverflowChar() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/overflowChar.kt"); + doTest(fileName); + } + + @TestMetadata("overflowLong.kt") + public void testOverflowLong() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/binaryOp/overflowLong.kt"); + doTest(fileName); + } +} diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/abstractClassesForGeneratedTests.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/abstractClassesForGeneratedTests.kt index fbb49524248..ea9789660a1 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/abstractClassesForGeneratedTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/abstractClassesForGeneratedTests.kt @@ -60,3 +60,5 @@ abstract class AbstractLocalClassesTest : BorrowedTest("localClasses/") abstract class AbstractNonLocalReturnsTest : BorrowedInlineTest("nonLocalReturns/") abstract class AbstractTypeAliasesTests : BorrowedTest("typealias/") + +abstract class AbstractBinaryOpTests : BorrowedTest("binaryOp/") \ No newline at end of file