JS: create new common directory for all generated tests, migrate several tests there
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = 1
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val prop: Int by Delegate()
|
||||
return run { if (prop == 1) "OK" else "fail" }
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
fun <T> myRun(f: () -> T) = f()
|
||||
|
||||
class Delegate {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = 1
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val prop: Int by Delegate()
|
||||
return myRun { if (prop == 1) "OK" else "fail" }
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var prop: Int by Delegate()
|
||||
run { prop = 2 }
|
||||
if (prop != 2) return "fail get"
|
||||
return run { if (prop != 2) "fail set" else "OK" }
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
fun <T> myRun(f: () -> T) = f()
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var prop: Int by Delegate()
|
||||
myRun { prop = 2 }
|
||||
if (prop != 2) return "fail get"
|
||||
return myRun { if (prop != 2) "fail set" else "OK" }
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class State(var realValue: Int)
|
||||
|
||||
fun format(event: String, property: String, value: Int): String
|
||||
= "${event}: ${property} = ${value}; "
|
||||
|
||||
object LoggerDelegate {
|
||||
var log = ""
|
||||
|
||||
operator fun getValue(state: State, desc: KProperty<*>): Int {
|
||||
log += format("get", desc.name, state.realValue)
|
||||
return state.realValue
|
||||
}
|
||||
|
||||
operator fun setValue(state: State, desc: KProperty<*>, value: Int) {
|
||||
log += format("set", desc.name, value)
|
||||
state.realValue = value
|
||||
}
|
||||
}
|
||||
|
||||
var State.value by LoggerDelegate
|
||||
|
||||
fun box(): String {
|
||||
val state = State(1)
|
||||
var expectedLog = ""
|
||||
|
||||
assertEquals(1, state.value)
|
||||
expectedLog += format("get", "value", 1)
|
||||
|
||||
state.value = 3
|
||||
expectedLog += format("set", "value", 3)
|
||||
|
||||
assertEquals(3, state.value)
|
||||
expectedLog += format("get", "value", 3)
|
||||
|
||||
assertEquals(expectedLog, LoggerDelegate.log)
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun foo() = Delegate()
|
||||
|
||||
class A {
|
||||
var prop: Int by foo()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = A()
|
||||
if (c.prop != 1) return "fail get"
|
||||
c.prop = 2
|
||||
if (c.prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
val p = Delegate()
|
||||
|
||||
class A {
|
||||
var prop: Int by p
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = A()
|
||||
if (c.prop != 1) return "fail get"
|
||||
c.prop = 2
|
||||
if (c.prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
val p = Delegate()
|
||||
|
||||
class A {
|
||||
var prop: Int by p
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = A()
|
||||
if (c.prop != 1) return "fail get"
|
||||
c.prop = 2
|
||||
if (c.prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
}
|
||||
|
||||
operator fun Delegate.getValue(t: Any?, p: KProperty<*>): Int = 1
|
||||
|
||||
class A {
|
||||
val prop: Int by Delegate()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return if (A().prop == 1) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = 1
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val prop: Int by Delegate()
|
||||
return if (prop == 1) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var prop: Int by Delegate()
|
||||
if (prop != 1) return "fail get"
|
||||
prop = 2
|
||||
if (prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var prop: Int by Delegate()
|
||||
var result = prop++
|
||||
if (result != 1) return "fail increment result: $prop"
|
||||
if (prop != 2) return "fail increment: $prop"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//TODO: reuse same tests from JVM backend
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var prop: Int by Delegate()
|
||||
prop += 1
|
||||
if (prop != 2) return "fail : $prop"
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
interface WithName {
|
||||
var name: String
|
||||
}
|
||||
|
||||
class GetPropertyName() {
|
||||
operator fun getValue(withName: WithName, property: KProperty<*>): String {
|
||||
return withName.name + ":" + property.name;
|
||||
}
|
||||
operator fun setValue(withName: WithName, property: KProperty<*>, value: String) {
|
||||
withName.name = value + ":" + property.name
|
||||
}
|
||||
}
|
||||
|
||||
class A : WithName {
|
||||
override var name = "propertyName"
|
||||
val d = GetPropertyName()
|
||||
|
||||
val a by d
|
||||
var OK by d
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
if (a.a != "propertyName:a") return "a.a != 'propertyName:a', it: " + a.a
|
||||
if (a.OK != "propertyName:OK") return "a.OK != 'propertyName:aOK', it: " + a.OK
|
||||
a.OK = "property"
|
||||
|
||||
if (a.a != "property:OK:a") return "a.a != 'property:OK:a', it: " + a.a
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
}
|
||||
|
||||
operator fun Delegate.setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
|
||||
class A {
|
||||
var prop: Int by Delegate()
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = A()
|
||||
if (c.prop != 1) return "fail get"
|
||||
c.prop = 2
|
||||
if (c.prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
interface WithNumber {
|
||||
var number: Int
|
||||
}
|
||||
|
||||
class IncNumber(val inc: Int) {
|
||||
operator fun getValue(withNumber: WithNumber, property: KProperty<*>): Int {
|
||||
return withNumber.number + inc;
|
||||
}
|
||||
operator fun setValue(withNumber: WithNumber, property: KProperty<*>, value: Int) {
|
||||
withNumber.number = value;
|
||||
}
|
||||
}
|
||||
|
||||
class A : WithNumber {
|
||||
override var number: Int = 5
|
||||
var nextNumber by IncNumber(3)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
if (A().nextNumber != 8) return "A().nextNumber != 8, it: ${A().nextNumber}"
|
||||
|
||||
val a = A()
|
||||
a.nextNumber = 10;
|
||||
if (a.number != 10) return "a.number != 10, it: " + a.number
|
||||
if (a.nextNumber != 13) return "a.nextNumber != 13, it: " + a.nextNumber
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = 1
|
||||
}
|
||||
|
||||
val prop: Int by Delegate()
|
||||
|
||||
fun box(): String {
|
||||
return if (prop == 1) "OK" else "fail"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
class Delegate {
|
||||
var inner = 1
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): Int = inner
|
||||
operator fun setValue(t: Any?, p: KProperty<*>, i: Int) {
|
||||
inner = i
|
||||
}
|
||||
}
|
||||
|
||||
var prop: Int by Delegate()
|
||||
|
||||
fun box(): String {
|
||||
if (prop != 1) return "fail get"
|
||||
prop = 2
|
||||
if (prop != 2) return "fail set"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package foo
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
interface Getter<T> {
|
||||
fun get(): T
|
||||
}
|
||||
|
||||
class Delegate<T>(val getter: Getter<T>) {
|
||||
var t: T? = null
|
||||
operator fun getValue(obj: Any, property: KProperty<*>): T {
|
||||
if (t != null) {
|
||||
return t!!
|
||||
}
|
||||
return getter.get()
|
||||
}
|
||||
operator fun setValue(obj: Any, property: KProperty<*>, value: T) {
|
||||
t = value
|
||||
}
|
||||
}
|
||||
|
||||
class A : Getter<Int> {
|
||||
var value = 0
|
||||
override fun get(): Int {
|
||||
return value
|
||||
}
|
||||
val delegate = Delegate(this)
|
||||
|
||||
val a by delegate
|
||||
var b by delegate
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = A()
|
||||
if (a.a != 0) return "a.a != 0"
|
||||
if (a.b != 0) return "a.b != 0"
|
||||
|
||||
a.b = 4
|
||||
if (a.a != 4) return "a.a != 4"
|
||||
if (a.b != 4) return "a.b != 4"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user