
dependencies {
    testImplementation libs.junit.jupiter.api
    testImplementation libs.junit.jupiter.params
    testImplementation libs.hamcrest
    testRuntimeOnly libs.junit.jupiter.engine
}

test {
    useJUnitPlatform()
    failFast = false
    testLogging {
        events 'STARTED', 'PASSED', 'FAILED', 'SKIPPED'
    }
    jvmArgs '--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED',
            '--add-exports=java.base/sun.nio.ch=ALL-UNNAMED',
            '--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED',
            '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED',
            '--add-opens=jdk.compiler/com.sun.tools.javac=ALL-UNNAMED',
            '--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED',
            '--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED',
            '--add-opens=java.base/java.lang=ALL-UNNAMED',
            '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED',
            '--add-opens=java.base/java.io=ALL-UNNAMED',
            '--add-opens=java.base/java.util=ALL-UNNAMED'
    afterSuite { desc, result ->
        if (!desc.parent) {
            println "\nTest result: ${result.resultType}"
            println "Test summary: ${result.testCount} tests, " +
                    "${result.successfulTestCount} succeeded, " +
                    "${result.failedTestCount} failed, " +
                    "${result.skippedTestCount} skipped"
        }
    }
}
