[Spec tests] Add spec tests for kotlin.Nothing, kotlin.Unit, reference equality and cast expressions

This commit is contained in:
anastasiia.spaseeva
2019-11-18 18:20:27 +03:00
parent bf50edee17
commit 44d0a99875
31 changed files with 1194 additions and 32 deletions
@@ -0,0 +1,28 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 2
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: check if two values are equal (===) by reference
*/
fun box(): String {
val u1 = foo1()
val u2 = foo2()
if (u1 === u2) {
return ("OK")
}
return ("NOK")
}
fun foo1() {
return Unit
}
fun foo2(): Unit {
return Unit
}
@@ -0,0 +1,22 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 2
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1,
* expressions, equality-expressions, reference-equality-expressions -> paragraph 3 -> sentence 3
* expressions, equality-expressions, reference-equality-expressions -> paragraph 2 -> sentence 1
* NUMBER: 2
* DESCRIPTION: check if two values are equal (===) by reference
*/
fun box(): String {
val u1 = "foo"
val u2 = "foo"
if (u1 === u2) {
return ("OK")
}
return ("NOK")
}
@@ -0,0 +1,20 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 2
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1
* NUMBER: 3
* DESCRIPTION: check if two values are non-equal (!==) by reference
*/
fun box(): String {
val u1 = "boo"
val u2 = "foo"
if (u1 !== u2) {
return ("OK")
}
return ("NOK")
}
@@ -0,0 +1,24 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 2
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1
* NUMBER: 4
* DESCRIPTION: check if values are non-equal (!==) by reference
*/
fun box(): String {
val u1 = "foo"
val byteArray = "foo".toByteArray(Charsets.UTF_8)
val u2 = byteArray.toString()
val u3 = byteArray.toString()
if (u1 !== u2 && u1 !== u3 && u2 !== u3 &&
u2 !== u1 && u3 !== u1 && u3 !== u2
) {
return ("OK")
}
return ("NOK")
}
@@ -0,0 +1,29 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 2
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1
* NUMBER: 5
* DESCRIPTION: two values are equal (===) or non-equal (!==) by reference
*/
fun box(): String {
val c1 = c
val c2 = c
val v1 = v
val v2 = v
if (c2 === c1 && c1 === c2 && c1 === c && c2 === c &&
v2 === v1 && v1 === v2 && v1 === v && v2 === v &&
v2 === c1 && v1 === c2 && v1 === c && v2 === c &&
c2 === v1 && c1 === v2 && c1 === v && c2 === v
) {
return ("OK")
}
return ("NOK")
}
const val c = 1000
const val v = 1000
@@ -0,0 +1,24 @@
// WITH_RUNTIME
/*
* KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-213
* PLACE: expressions, equality-expressions, reference-equality-expressions -> paragraph 1 -> sentence 3
* RELEVANT PLACES: expressions, built-in-types-and-their-semantics, kotlin.unit -> paragraph 1 -> sentence 1
* NUMBER: 1
* DESCRIPTION: check equallity by refference via constructor
*/
fun box(): String {
val u2 = mutableListOf<Int>(1, 2, 3)
val u3 = u1
if (u1 !== u2 && u1 === u3
) {
return ("OK")
}
return ("NOK")
}
val u1 = mutableListOf<Int>(1, 2, 3)