added test case for KT-2354

This commit is contained in:
James Strachan
2012-07-03 13:55:49 +01:00
parent 32e73c10b1
commit 25bf753369
6 changed files with 98 additions and 1 deletions
+20
View File
@@ -2,6 +2,26 @@ package kotlin
import java.util.*
public inline fun <T> java.lang.Iterable<T>.toString(): String {
return makeString(", ", "[", "]")
}
public inline fun <T> java.util.List<T>.equals(that: List<T>): Boolean {
val s1 = this.size()
val s2 = that.size()
if (s1 == s2) {
for (i in 0.upto(s1)) {
val elem1 = this.get(i)
val elem2 = that.get(i)
if (elem1 != elem2) {
return false
}
}
return true
}
return false
}
/** Returns a new ArrayList with a variable number of initial elements */
public inline fun arrayList<T>(vararg values: T) : ArrayList<T> {
val list = ArrayList<T>()
@@ -54,10 +54,18 @@ public abstract class SingleFileTranslationTest extends BasicTest {
runFunctionOutputTest(ecmaVersions, filename, "foo", "box", true);
}
public void checkFooBoxIsValue(@NotNull String filename, @NotNull EnumSet<EcmaVersion> ecmaVersions, Object expected) throws Exception {
runFunctionOutputTest(ecmaVersions, filename, "foo", "box", expected);
}
protected void fooBoxTest() throws Exception {
checkFooBoxIsTrue(getTestName(true) + ".kt", EcmaVersion.all());
}
protected void fooBoxIsValue(Object expected) throws Exception {
checkFooBoxIsValue(getTestName(true) + ".kt", EcmaVersion.all(), expected);
}
protected void fooBoxTest(@NotNull EnumSet<EcmaVersion> ecmaVersions) throws Exception {
checkFooBoxIsTrue(getTestName(true) + ".kt", ecmaVersions);
}
@@ -0,0 +1,32 @@
/*
* Copyright 2010-2012 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.k2js.test.semantics;
public final class EqualsTest extends AbstractExpressionTest {
public EqualsTest() {
super("equals/");
}
public void TODO_testCustomEqualsMethod() throws Exception {
fooBoxTest();
}
public void testStringsEqual() throws Exception {
fooBoxTest();
}
}
@@ -0,0 +1,18 @@
package foo
class Foo(val name: String) {
public fun equals(that: Foo): Boolean {
return this.name == that.name
}
}
fun box() : Boolean {
val a = Foo("abc")
val b = Foo("abc")
val c = Foo("def")
if (a != b) return false
if (a == c) return false
return true
}
@@ -0,0 +1,12 @@
package foo
fun box() : Boolean {
val a = "abc"
val b = "abc"
val c = "def"
if (a != b) return false
if (a == c) return false
return true
}
+8 -1
View File
@@ -6,6 +6,11 @@ import org.junit.Test as test
class ListTest {
test fun toString() {
val data = arrayList("foo", "bar")
assertEquals("[foo, bar]", data.toString())
}
test fun head() {
val data = arrayList("foo", "bar")
assertEquals("foo", data.head)
@@ -13,7 +18,9 @@ class ListTest {
test fun tail() {
val data = arrayList("foo", "bar", "whatnot")
assertEquals(arrayList("bar", "whatnot"), data.tail)
val actual = data.tail
val expected = arrayList("bar", "whatnot")
assertEquals(expected, actual)
}
test fun first() {