JS: create new common directory for all generated tests, migrate several tests there

This commit is contained in:
Alexey Andreev
2016-08-26 16:44:48 +03:00
parent 34a57f863b
commit 2bf0199959
321 changed files with 2123 additions and 2001 deletions
@@ -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" }
}
@@ -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"
}