Reorganize spec tests infrastructure code
- Add the tests mute system for the diagnostic tests - Move the code for the test info parsing to the separate package `parsers` - Unification of the `linked` and `not linked` spec tests - Package structure is refactored - Change the multiline comment format with a test information - Actualize `PrintSpecTestsStatistic` - Other different code improvements
This commit is contained in:
+10
-7
@@ -1,12 +1,11 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, common
|
||||
NUMBER: 1
|
||||
DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (NEGATIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, common
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -15,6 +14,7 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
inline fun case_1(value_1: Int?, block: () -> Unit): Boolean {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
|
||||
@@ -26,6 +26,7 @@ inline fun case_1(value_1: Int?, block: () -> Unit): Boolean {
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun <T> T?.case_2(value_1: Int?, value_2: Any?, block: () -> Unit): Boolean? {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
|
||||
@@ -42,10 +43,11 @@ inline fun <T> T?.case_2(value_1: Int?, value_2: Any?, block: () -> Unit): Boole
|
||||
return null
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int?) {
|
||||
val value_2: Int
|
||||
if (contracts.case_1(value_1) { value_2 = 10 }) {
|
||||
@@ -56,6 +58,7 @@ fun case_1(value_1: Int?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int?, value_2: Int?, value_3: Any?) {
|
||||
val value_4: Int
|
||||
when (value_1.case_2(value_2, value_3) { value_4 = 10 }) {
|
||||
|
||||
+10
-7
@@ -1,12 +1,11 @@
|
||||
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, common
|
||||
NUMBER: 1
|
||||
DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, common
|
||||
* NUMBER: 1
|
||||
* DESCRIPTION: Analysis by contracts with mixed CallsInPlace and Returns effects.
|
||||
*/
|
||||
|
||||
// FILE: contracts.kt
|
||||
@@ -15,6 +14,7 @@ package contracts
|
||||
|
||||
import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
inline fun case_1(value_1: Int?, block: () -> Unit): Boolean {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -24,6 +24,7 @@ inline fun case_1(value_1: Int?, block: () -> Unit): Boolean {
|
||||
return value_1 != null
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun <T> T?.case_2(value_1: Int?, value_2: Any?, block: () -> Unit): Boolean? {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -37,10 +38,11 @@ inline fun <T> T?.case_2(value_1: Int?, value_2: Any?, block: () -> Unit): Boole
|
||||
return null
|
||||
}
|
||||
|
||||
// FILE: usages.kt
|
||||
// FILE: main.kt
|
||||
|
||||
import contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(value_1: Int?) {
|
||||
val value_3: Int
|
||||
if (contracts.case_1(value_1) { value_3 = 10 }) {
|
||||
@@ -51,6 +53,7 @@ fun case_1(value_1: Int?) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(value_1: Int?, value_2: Int?, value_3: Any?) {
|
||||
val value_4: Int
|
||||
when (value_1.case_2(value_2, value_3) { value_4 = 10 }) {
|
||||
|
||||
+8
-6
@@ -3,20 +3,21 @@
|
||||
// SKIP_TXT
|
||||
|
||||
/*
|
||||
KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
|
||||
SECTION: contracts
|
||||
CATEGORIES: analysis, common
|
||||
NUMBER: 2
|
||||
DESCRIPTION: Recursion in the lambda of contract function.
|
||||
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
|
||||
*
|
||||
* SECTIONS: contracts, analysis, common
|
||||
* NUMBER: 2
|
||||
* DESCRIPTION: Recursion in the lambda of contract function.
|
||||
*/
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
fun case_1(x: Int): Unit = funWithExactlyOnceCallsInPlace {
|
||||
if (x == 0) return
|
||||
if (x == 1) return
|
||||
return case_1(x - 2)
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
fun case_2(x: Int) {
|
||||
funWithAtLeastOnceCallsInPlace {
|
||||
if (x == 0) return
|
||||
@@ -25,6 +26,7 @@ fun case_2(x: Int) {
|
||||
}
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
fun case_3(x: Int) {
|
||||
funWithAtMostOnceCallsInPlace {
|
||||
if (x == 0) return
|
||||
|
||||
Reference in New Issue
Block a user