Minor in JS backend: added regression tests.
#{KT-2219, KT-2470, KT-2507, KT-2222, KT-2995, KT-2221} Obsolete
This commit is contained in:
@@ -32,6 +32,10 @@ public final class ClassInheritanceTest extends SingleFileTranslationTest {
|
|||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testOverrideAnyMethods() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
public void testBaseCall() throws Exception {
|
public void testBaseCall() throws Exception {
|
||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
@@ -75,9 +79,14 @@ public final class ClassInheritanceTest extends SingleFileTranslationTest {
|
|||||||
public void testKt3499() throws Exception {
|
public void testKt3499() throws Exception {
|
||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFromFakeClasses() throws Exception {
|
public void testFromFakeClasses() throws Exception {
|
||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testWithInitializeMethod() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,10 @@ public class FunctionTest extends AbstractExpressionTest {
|
|||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFunctionExpression() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
public void testExpressionAsFunction() throws Exception {
|
public void testExpressionAsFunction() throws Exception {
|
||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
}
|
}
|
||||||
@@ -123,6 +127,14 @@ public class FunctionTest extends AbstractExpressionTest {
|
|||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testOverloadOverridenFun() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOverloadClassConstructorByFactoryMethod() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
|
|
||||||
public void testManglingAnyMethods() throws Exception {
|
public void testManglingAnyMethods() throws Exception {
|
||||||
checkFooBoxIsOk();
|
checkFooBoxIsOk();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,4 @@ public final class IdentifierClashTest extends AbstractExpressionTest {
|
|||||||
public void testOverloadedFun() throws Exception {
|
public void testOverloadedFun() throws Exception {
|
||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDummyFunctionToMakeTestWork() {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,12 +174,6 @@ public final class MiscTest extends AbstractExpressionTest {
|
|||||||
fooBoxIsValue("OK");
|
fooBoxIsValue("OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO:see http://youtrack.jetbrains.com/issue/KT-2565
|
|
||||||
@SuppressWarnings("UnusedDeclaration")
|
|
||||||
public void TODO_testFunctionExpression() throws Exception {
|
|
||||||
fooBoxIsValue("OK");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExclExclThrows() throws Exception {
|
public void testExclExclThrows() throws Exception {
|
||||||
try {
|
try {
|
||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
|
|||||||
@@ -85,4 +85,8 @@ public final class PatternMatchingTest extends SingleFileTranslationTest {
|
|||||||
public void testWhenWithOnlyElse() throws Exception {
|
public void testWhenWithOnlyElse() throws Exception {
|
||||||
fooBoxTest();
|
fooBoxTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testIfInWhen() throws Exception {
|
||||||
|
checkFooBoxIsOk();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+8
-8
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2013 JetBrains s.r.o.
|
* Copyright 2010-2014 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.
|
||||||
@@ -16,15 +16,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.k2js.test.semantics;
|
package org.jetbrains.k2js.test.semantics;
|
||||||
|
|
||||||
public final class ToStringTest extends AbstractExpressionTest {
|
import org.jetbrains.k2js.test.SingleFileTranslationTest;
|
||||||
|
|
||||||
public ToStringTest() {
|
public final class RegressionTest extends SingleFileTranslationTest {
|
||||||
super("toString/");
|
|
||||||
|
public RegressionTest() {
|
||||||
|
super("regression/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testToString() throws Exception {
|
public void testKt2470() throws Exception {
|
||||||
// TODO uncomment this method to make the test case fail
|
checkFooBoxIsOk();
|
||||||
//fooBoxIsValue("Foo(James)");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -21,7 +21,7 @@ fun box(): Any? {
|
|||||||
if ( {(x: Int) -> x }(1) != 1) return "test 5 failed";
|
if ( {(x: Int) -> x }(1) != 1) return "test 5 failed";
|
||||||
if ( 1.{ Int.(x: Int) -> x + this }(1) != 2) return "test 6 failed";
|
if ( 1.{ Int.(x: Int) -> x + this }(1) != 2) return "test 6 failed";
|
||||||
val tmp = 1.({ Int.() -> this })()
|
val tmp = 1.({ Int.() -> this })()
|
||||||
if (tmp != 1) return "test 7 failed, res: $tmp ${tmp is Int}";
|
if (+tmp != 1) return "test 7 failed, res: $tmp ${tmp is Int}";
|
||||||
if ( (fooT1<String>("mama"))() != "mama") return "test 8 failed";
|
if ( (fooT1<String>("mama"))() != "mama") return "test 8 failed";
|
||||||
if ( (fooT2<String>("mama"))("papa") != "mamapapa") return "test 9 failed";
|
if ( (fooT2<String>("mama"))("papa") != "mamapapa") return "test 9 failed";
|
||||||
return "OK"
|
return "OK"
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
// KT-2995 creating factory methods to simulate overloaded constructors don't work in JavaScript
|
||||||
|
|
||||||
|
package foo
|
||||||
|
|
||||||
|
class Foo(val name: String)
|
||||||
|
|
||||||
|
fun Foo() = Foo("<default-name>")
|
||||||
|
|
||||||
|
fun assertEquals(expected: Any, actual: Any) {
|
||||||
|
if (expected != actual) throw Exception("expected = $expected, actual = $actual")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
assertEquals("<default-name>", Foo().name)
|
||||||
|
assertEquals("BarBaz", Foo("BarBaz").name)
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
// KT-2219 if function overload overridden function its name doesn't translated correctly
|
||||||
|
|
||||||
|
package foo
|
||||||
|
|
||||||
|
fun assertEquals(expected: Any, actual: Any) {
|
||||||
|
if (expected != actual) throw Exception("expected = $expected, actual = $actual")
|
||||||
|
}
|
||||||
|
|
||||||
|
trait I {
|
||||||
|
fun test(): String
|
||||||
|
}
|
||||||
|
|
||||||
|
class P : I {
|
||||||
|
override fun test(): String = "foo" + test("bar")
|
||||||
|
|
||||||
|
private fun test(p: String) = p
|
||||||
|
|
||||||
|
fun test(s: String, i: Int) = "$i $s"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
assertEquals("foobar", P().test())
|
||||||
|
assertEquals("35 baz", P().test("baz", 35))
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -13,12 +13,12 @@ class C : A, B {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun assertEquals(expected: Any, actual: Any) {
|
fun assertEquals(expected: Any, actual: Any) {
|
||||||
if (expected != actual) throw Exception("expected = $expected\nactual = $actual")
|
if (expected != actual) throw Exception("expected = $expected, actual = $actual")
|
||||||
}
|
}
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
assertEquals(C().foo(1), "A")
|
assertEquals("A", C().foo(1))
|
||||||
assertEquals(C().foo(""), "B")
|
assertEquals("B", C().foo(""))
|
||||||
assertEquals(C().foo(), "C")
|
assertEquals("C", C().foo())
|
||||||
|
|
||||||
return "OK"
|
return "OK"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
package foo
|
|
||||||
|
|
||||||
class Foo(val name: String) {
|
|
||||||
|
|
||||||
public override fun toString(): String {
|
|
||||||
return "Foo($name)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun box(): String {
|
|
||||||
val a = Foo("James")
|
|
||||||
return a.toString()
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
native
|
||||||
|
fun String.charCodeAt(i: Int): Int = noImpl
|
||||||
|
|
||||||
|
// Because String in JS doesn't have hashCode method
|
||||||
|
fun String.myHashCode(): Int {
|
||||||
|
var hash = 0
|
||||||
|
|
||||||
|
for (i in 0..size - 1) {
|
||||||
|
hash = 31 * hash + charCodeAt(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
return hash
|
||||||
|
}
|
||||||
|
|
||||||
|
class Foo(val name: String) {
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (other is Foo) return name == other.name
|
||||||
|
return this identityEquals other
|
||||||
|
}
|
||||||
|
override fun hashCode(): Int = name.myHashCode()
|
||||||
|
override fun toString(): String = "Foo($name)"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun assertEquals(expected: Any, actual: Any) {
|
||||||
|
if (expected != actual) throw Exception("expected = $expected, actual = $actual")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val james = Foo("James")
|
||||||
|
val anotherJames = Foo("James")
|
||||||
|
val max = Foo("Max")
|
||||||
|
|
||||||
|
assertEquals(true, james == anotherJames)
|
||||||
|
assertEquals(false, james == max)
|
||||||
|
assertEquals("James".myHashCode(), james.hashCode())
|
||||||
|
assertEquals("Max".myHashCode(), max.hashCode())
|
||||||
|
assertEquals("Foo(James)", james.toString())
|
||||||
|
assertEquals("Foo(Max)", max.toString())
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
class A(val ok: String) {
|
||||||
|
fun initialize() = ok
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String = A("OK").initialize()
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// KT-2221 if in when
|
||||||
|
|
||||||
|
package foo
|
||||||
|
|
||||||
|
fun test(caseId: Int, value: Int, expected: Int) {
|
||||||
|
val actual: Int
|
||||||
|
when (caseId) {
|
||||||
|
0 -> if (value < 0) actual = -value else actual = value
|
||||||
|
1 -> actual = if (value < 0) -value else value
|
||||||
|
else -> throw Exception("Unexpected case: $caseId")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (expected != actual) throw Exception("expected = $expected, actual = $actual")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
test(0, 3, 3)
|
||||||
|
test(0, -13, 13)
|
||||||
|
test(1, 23, 23)
|
||||||
|
test(1, -3, 3)
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// KT-2470 another name mangling bug: kotlin.test.failsWith() gets generated to invalid JS
|
||||||
|
|
||||||
|
package foo
|
||||||
|
|
||||||
|
native val Exception.message: String = noImpl
|
||||||
|
|
||||||
|
public fun <T : Throwable> failsWith(block: () -> Any): T {
|
||||||
|
try {
|
||||||
|
block()
|
||||||
|
}
|
||||||
|
catch (e: T) {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
throw Exception("Should have failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val a = failsWith<Exception> {
|
||||||
|
throw Exception("OK")
|
||||||
|
}
|
||||||
|
|
||||||
|
return a.message
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user