JS: move more test to box tests
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
|
||||
operator fun div(other: A) = "OK"
|
||||
|
||||
}
|
||||
|
||||
fun box() = A() / A()
|
||||
@@ -0,0 +1,18 @@
|
||||
package foo
|
||||
|
||||
|
||||
class A(t: Int) {
|
||||
var i = t
|
||||
operator fun compareTo(other: A) = (this.i - other.i)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (A(3) <= A(2)) return "fail1"
|
||||
if (A(2) < A(2)) return "fail2"
|
||||
if (A(1) < A(0)) return "fail3"
|
||||
if (A(2) > A(2)) return "fail4"
|
||||
if (A(3) > A(4)) return "fail5"
|
||||
if (A(0) >= A(100)) return "fail6"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
|
||||
class A(t: Int) {
|
||||
var i = t
|
||||
infix operator fun compareTo(other: A) = (this.i - other.i)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (A(3) compareTo A(2) <= 0) return "fail1"
|
||||
if (A(2) compareTo A(2) != 0) return "fail2"
|
||||
if (A(1) compareTo A(0) <= 0) return "fail3"
|
||||
if (A(3) compareTo A(4) >= 0) return "fail4"
|
||||
if (A(0) compareTo A(100) >= 0) return "fail5"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package foo
|
||||
|
||||
var global = ""
|
||||
|
||||
fun log(message: String) {
|
||||
global += message
|
||||
}
|
||||
|
||||
fun test1(): String {
|
||||
val list = mutableListOf<(Int) -> Unit>()
|
||||
|
||||
var result = ""
|
||||
list += { log("<$it>") }
|
||||
list += { result += "($it)" }
|
||||
list += { result += "[$it]"; result += "{$it}" }
|
||||
|
||||
for(f in list) f(1)
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals("(1)[1]{1}", test1())
|
||||
assertEquals(global, "<1>")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
|
||||
operator fun not() = "OK"
|
||||
|
||||
}
|
||||
|
||||
fun box() = !A()
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package foo
|
||||
|
||||
class MyInt(i: Int) {
|
||||
var b = i
|
||||
operator fun inc(): MyInt {
|
||||
b = b + 1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
class A() {
|
||||
|
||||
var gc = 0
|
||||
var sc = 0
|
||||
|
||||
|
||||
var b = MyInt(0)
|
||||
get() {
|
||||
gc = gc + 1;
|
||||
return field;
|
||||
}
|
||||
set(a: MyInt) {
|
||||
sc = sc + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val t = A()
|
||||
val d = t.b++
|
||||
if (t.sc != 1) return "fail1"
|
||||
if (t.gc != 1) return "fail2"
|
||||
return "OK"
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package foo
|
||||
|
||||
import java.util.*
|
||||
|
||||
class ArrayWrapper<T>() {
|
||||
val contents = ArrayList<T>()
|
||||
|
||||
fun add(item: T) {
|
||||
contents.add(item)
|
||||
}
|
||||
|
||||
operator fun plusAssign(rhs: ArrayWrapper<T>) {
|
||||
contents.addAll(rhs.contents)
|
||||
}
|
||||
|
||||
fun get(index: Int): T {
|
||||
return contents.get(index)
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var v1 = ArrayWrapper<String>()
|
||||
val v2 = ArrayWrapper<String>()
|
||||
v1.add("foo")
|
||||
v2.add("bar")
|
||||
v1 += v2
|
||||
return if (v1.contents.size == 2) "OK" else "fail"
|
||||
}
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
package foo
|
||||
|
||||
import java.util.*
|
||||
|
||||
class A<T>(val list: MutableList<T>) {
|
||||
fun addAll(c: Collection<T>) {
|
||||
list.addAll(c)
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <T> A<T>.plusAssign(other: Collection<T>) {
|
||||
addAll(other)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var v1 = arrayListOf("foo")
|
||||
val v2 = listOf("bar")
|
||||
|
||||
val a = A(v1)
|
||||
a += v2
|
||||
|
||||
if (v1.size != 2) return "fail1: ${v1.size}"
|
||||
if (v1[0] != "foo") return "fail2: ${v1[0]}"
|
||||
if (v1[1] != "bar") return "fail3: ${v1[1]}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
open class Foo<out T>(open val value: T)
|
||||
open class MutableFoo<T>(override var value: T): Foo<T>(value)
|
||||
|
||||
operator fun <T> Foo<T>.plus(x: T): Foo<T> = Foo(x)
|
||||
|
||||
// overloading:
|
||||
operator fun <T> MutableFoo<T>.plus(x: T): MutableFoo<T> = MutableFoo(x)
|
||||
|
||||
|
||||
fun box(): String {
|
||||
var f = MutableFoo(1)
|
||||
f += 2
|
||||
return if (f is MutableFoo && f.value == 2) "OK" else "fail"
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package foo
|
||||
|
||||
import java.util.*
|
||||
|
||||
operator fun <T> ArrayList<T>.plus(other: Collection<T>): List<T> {
|
||||
val c = ArrayList<T>()
|
||||
c.addAll(this)
|
||||
c.addAll(other)
|
||||
return c
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var v1 = ArrayList<String>()
|
||||
v1.add("foo")
|
||||
val v2 = ArrayList<String>()
|
||||
v2.add("bar")
|
||||
val v = v1 + v2
|
||||
|
||||
if (v.size != 2) return "fail1: ${v.size}"
|
||||
if (v[0] != "foo") return "fail2: ${v[0]}"
|
||||
if (v[1] != "bar") return "fail3: ${v[1]}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
package foo
|
||||
|
||||
class A(val c: Int) {
|
||||
}
|
||||
|
||||
|
||||
operator fun A.inc() = A(5)
|
||||
operator fun A.dec() = A(10)
|
||||
|
||||
fun box(): String {
|
||||
var a = A(1)
|
||||
|
||||
if ((++a).c != 5) return "fail1"
|
||||
if ((a++).c != 5) return "fail2"
|
||||
if ((--a).c != 10) return "fail3"
|
||||
if ((a--).c != 10) return "fail4"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package foo
|
||||
|
||||
var a = MyInt()
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
operator fun inc(): MyInt {
|
||||
val res = MyInt();
|
||||
res.b = b;
|
||||
res.b++;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
a++;
|
||||
a++;
|
||||
return if (a.b == 2) "OK" else "fail"
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
|
||||
operator fun unaryPlus() = "O"
|
||||
operator fun unaryMinus() = "K"
|
||||
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var c = A()
|
||||
return +c + -c
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
|
||||
var message = ""
|
||||
operator fun plusAssign(other: A) {
|
||||
message = message + "!"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var c = A()
|
||||
c += A()
|
||||
c += A()
|
||||
return if (c.message == "!!") return "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package foo
|
||||
|
||||
class myInt(a: Int) {
|
||||
val value = a;
|
||||
|
||||
operator fun plus(other: myInt): myInt = myInt(value + other.value)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
return if ((myInt(3) + myInt(5)).value == 8) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package foo
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
operator fun inc(): MyInt {
|
||||
val res = MyInt()
|
||||
res.b++;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
var c = MyInt()
|
||||
c++;
|
||||
return if (c.b == 1) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package foo
|
||||
|
||||
var a = MyInt()
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
operator fun inc(): MyInt {
|
||||
b = b + 1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val d = a++;
|
||||
|
||||
if (a.b != 1) return "fail1: ${a.b}"
|
||||
if (d.b != 1) return "fail2: ${d.b}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package foo
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
operator fun dec(): MyInt {
|
||||
val res = MyInt()
|
||||
res.b++;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
var c = MyInt()
|
||||
--c;
|
||||
return if (c.b == 1) "OK" else "fail: ${c.b}"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package foo
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
operator fun dec(): MyInt {
|
||||
b = b + 1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box(): String {
|
||||
var c = MyInt()
|
||||
val d = --c;
|
||||
return if (c.b == 1) "OK" else "fail: ${c.b}"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
class MyInt(i: Int) {
|
||||
var b = i
|
||||
operator fun inc(): MyInt {
|
||||
b = b++;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var t = MyInt(0)
|
||||
t++;
|
||||
return if (t.b == 0) "OK" else "fail: ${t.b}"
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
class MyInt(i: Int) {
|
||||
var b = i
|
||||
operator fun inc(): MyInt {
|
||||
b++;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var t = MyInt(0)
|
||||
t++;
|
||||
return if (t.b == 1) "OK" else "fail: ${t.b}"
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
class A() {
|
||||
var p = "yeah"
|
||||
operator fun mod(other: A): A {
|
||||
return A();
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var c = A()
|
||||
val d = c;
|
||||
c %= A();
|
||||
return if ((c != d) && (c.p == "yeah")) "OK" else "fail"
|
||||
}
|
||||
Reference in New Issue
Block a user