diff --git a/build.gradle.kts b/build.gradle.kts index c4342539d1..12a56b9cfa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -67,6 +67,7 @@ allprojects { "--add-opens", "java.base/java.util.concurrent=ALL-UNNAMED", "--add-opens", "java.base/java.util.concurrent.locks=ALL-UNNAMED", "--add-opens", "java.base/java.text=ALL-UNNAMED", + "--add-opens", "java.base/java.io=ALL-UNNAMED", "--add-opens", "java.base/sun.security.util=ALL-UNNAMED", "--add-opens", "java.base/sun.reflect.generics.repository=ALL-UNNAMED", "--add-opens", "java.base/java.security=ALL-UNNAMED", diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt index 3beeb30b4a..cdff5e110a 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt @@ -512,6 +512,17 @@ object UtSettings : AbstractSettings(logger, defaultKeyForSettingsPath, defaultS * it is more important not to fall at all rather than work precisely. */ var treatAbsentMethodsAsUnboundedValue by getBooleanProperty(false) + + // region preferred size options + // Changes in this region might severe influence on the performance of symbolic execution. + + /** + * A maximum size for any array in the program. Note that input arrays might be less than this value + * due to the symbolic engine limitation, see `org.utbot.engine.Traverser.softMaxArraySize`. + */ + var maxArraySize by getIntProperty(1024) + + // endregion } /** diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/process/OpenModulesContainer.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/process/OpenModulesContainer.kt index 2190faa487..8a07ca5a08 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/process/OpenModulesContainer.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/process/OpenModulesContainer.kt @@ -15,6 +15,7 @@ object OpenModulesContainer { openPackage("java.base", "java.lang.invoke") openPackage("java.base", "jdk.internal.misc") openPackage("java.base", "sun.reflect.generics.repository") + openPackage("java.base", "java.io") openPackage("java.base", "java.lang") openPackage("java.base", "java.security") openPackage("java.base", "java.util") diff --git a/utbot-framework-test/src/test/kotlin/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.kt b/utbot-framework-test/src/test/kotlin/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.kt new file mode 100644 index 0000000000..0d5a86ed80 --- /dev/null +++ b/utbot-framework-test/src/test/kotlin/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.kt @@ -0,0 +1,42 @@ +package org.utbot.examples.stdlib + +import org.junit.jupiter.api.Test +import org.utbot.framework.plugin.api.CodegenLanguage +import org.utbot.framework.plugin.api.UtCompositeModel +import org.utbot.framework.plugin.api.UtNewInstanceInstrumentation +import org.utbot.framework.plugin.api.UtPrimitiveModel +import org.utbot.framework.plugin.api.util.id +import org.utbot.testcheckers.eq +import org.utbot.testing.CodeGeneration +import org.utbot.testing.DoNotCalculate +import org.utbot.testing.UtValueTestCaseChecker + +internal class JavaIOFileInputStreamCheckTest : UtValueTestCaseChecker( + testClass = JavaIOFileInputStreamCheck::class, + testCodeGeneration = true, + pipelines = listOf( + TestLastStage(CodegenLanguage.JAVA), + TestLastStage(CodegenLanguage.KOTLIN, CodeGeneration) // because of mocks + )) { + @Test + fun testRead() { + checkMocksAndInstrumentation( + JavaIOFileInputStreamCheck::read, + eq(1), + { _, _, instrumentation, r -> + val constructorMock = instrumentation.single() as UtNewInstanceInstrumentation + + val classIdEquality = constructorMock.classId == java.io.FileInputStream::class.id + val callSiteIdEquality = constructorMock.callSites.single() == JavaIOFileInputStreamCheck::class.id + val instance = constructorMock.instances.single() as UtCompositeModel + val methodMock = instance.mocks.entries.single() + val methodNameEquality = methodMock.key.name == "read" + val mockValueResult = r == (methodMock.value.single() as UtPrimitiveModel).value as Int + + classIdEquality && callSiteIdEquality && instance.isMock && methodNameEquality && mockValueResult + }, + additionalMockAlwaysClasses = setOf(java.io.FileInputStream::class.id), + coverage = DoNotCalculate // there is a problem with coverage calculation of mocked values + ) + } +} \ No newline at end of file diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtDoubleStream.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtDoubleStream.java index 1d1ef89ecf..82c081011b 100644 --- a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtDoubleStream.java +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtDoubleStream.java @@ -1,6 +1,7 @@ package org.utbot.engine.overrides.stream; import org.jetbrains.annotations.NotNull; +import org.utbot.engine.ResolverKt; import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray; import org.utbot.engine.overrides.collections.UtGenericStorage; import org.utbot.framework.plugin.api.visible.UtStreamConsumingException; @@ -27,7 +28,6 @@ import static org.utbot.api.mock.UtMock.assume; import static org.utbot.api.mock.UtMock.assumeOrExecuteConcretely; -import static org.utbot.engine.ResolverKt.HARD_MAX_ARRAY_SIZE; import static org.utbot.engine.overrides.UtOverrideMock.alreadyVisited; import static org.utbot.engine.overrides.UtOverrideMock.executeConcretely; import static org.utbot.engine.overrides.UtOverrideMock.parameter; @@ -70,7 +70,7 @@ public UtDoubleStream(Double[] data, int startInclusive, int endExclusive) { * if it was passed as parameter to method under test. *

* Preconditions that are must be satisfied: - *

  • elementData.size in 0..HARD_MAX_ARRAY_SIZE.
  • + *
  • elementData.size in 0..MAX_STREAM_SIZE.
  • *
  • elementData is marked as parameter
  • *
  • elementData.storage and it's elements are marked as parameters
  • */ @@ -91,7 +91,7 @@ void preconditionCheck() { assume(elementData.end >= 0); // we can create a stream for an array using Stream.of - assumeOrExecuteConcretely(elementData.end <= HARD_MAX_ARRAY_SIZE); + assumeOrExecuteConcretely(elementData.end <= ResolverKt.MAX_STREAM_SIZE); // As real primitive streams contain primitives, we cannot accept nulls. for (int i = 0; i < elementData.end; i++) { diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtIntStream.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtIntStream.java index 96788e9983..0d1d530bbc 100644 --- a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtIntStream.java +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtIntStream.java @@ -1,6 +1,7 @@ package org.utbot.engine.overrides.stream; import org.jetbrains.annotations.NotNull; +import org.utbot.engine.ResolverKt; import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray; import org.utbot.engine.overrides.collections.UtGenericStorage; import org.utbot.framework.plugin.api.visible.UtStreamConsumingException; @@ -28,7 +29,6 @@ import static org.utbot.api.mock.UtMock.assume; import static org.utbot.api.mock.UtMock.assumeOrExecuteConcretely; -import static org.utbot.engine.ResolverKt.HARD_MAX_ARRAY_SIZE; import static org.utbot.engine.overrides.UtOverrideMock.alreadyVisited; import static org.utbot.engine.overrides.UtOverrideMock.executeConcretely; import static org.utbot.engine.overrides.UtOverrideMock.parameter; @@ -92,7 +92,7 @@ void preconditionCheck() { assume(elementData.end >= 0); // we can create a stream for an array using Stream.of - assumeOrExecuteConcretely(elementData.end <= HARD_MAX_ARRAY_SIZE); + assumeOrExecuteConcretely(elementData.end <= ResolverKt.MAX_STREAM_SIZE); // As real primitive streams contain primitives, we cannot accept nulls. for (int i = 0; i < elementData.end; i++) { diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtLongStream.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtLongStream.java index 19166895f3..74c4465a64 100644 --- a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtLongStream.java +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtLongStream.java @@ -1,6 +1,7 @@ package org.utbot.engine.overrides.stream; import org.jetbrains.annotations.NotNull; +import org.utbot.engine.ResolverKt; import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray; import org.utbot.engine.overrides.collections.UtGenericStorage; import org.utbot.framework.plugin.api.visible.UtStreamConsumingException; @@ -28,7 +29,6 @@ import static org.utbot.api.mock.UtMock.assume; import static org.utbot.api.mock.UtMock.assumeOrExecuteConcretely; -import static org.utbot.engine.ResolverKt.HARD_MAX_ARRAY_SIZE; import static org.utbot.engine.overrides.UtOverrideMock.alreadyVisited; import static org.utbot.engine.overrides.UtOverrideMock.executeConcretely; import static org.utbot.engine.overrides.UtOverrideMock.parameter; @@ -92,7 +92,7 @@ void preconditionCheck() { assume(elementData.end >= 0); // we can create a stream for an array using Stream.of - assumeOrExecuteConcretely(elementData.end <= HARD_MAX_ARRAY_SIZE); + assumeOrExecuteConcretely(elementData.end <= ResolverKt.MAX_STREAM_SIZE); // As real primitive streams contain primitives, we cannot accept nulls. for (int i = 0; i < elementData.end; i++) { diff --git a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtStream.java b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtStream.java index fd50aad64c..37413f0725 100644 --- a/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtStream.java +++ b/utbot-framework/src/main/java/org/utbot/engine/overrides/stream/UtStream.java @@ -1,6 +1,7 @@ package org.utbot.engine.overrides.stream; import org.jetbrains.annotations.NotNull; +import org.utbot.engine.ResolverKt; import org.utbot.engine.overrides.UtArrayMock; import org.utbot.engine.overrides.collections.RangeModifiableUnlimitedArray; import org.utbot.engine.overrides.collections.UtGenericStorage; @@ -31,7 +32,6 @@ import static org.utbot.api.mock.UtMock.assume; import static org.utbot.api.mock.UtMock.assumeOrExecuteConcretely; -import static org.utbot.engine.ResolverKt.HARD_MAX_ARRAY_SIZE; import static org.utbot.engine.overrides.UtOverrideMock.alreadyVisited; import static org.utbot.engine.overrides.UtOverrideMock.executeConcretely; import static org.utbot.engine.overrides.UtOverrideMock.parameter; @@ -95,7 +95,7 @@ void preconditionCheck() { assume(elementData.end >= 0); // we can create a stream for an array using Stream.of - assume(elementData.end <= HARD_MAX_ARRAY_SIZE); + assume(elementData.end <= ResolverKt.MAX_STREAM_SIZE); visit(this); } diff --git a/utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt b/utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt index 41d4a5148a..e7a43e0048 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt @@ -100,16 +100,20 @@ import org.utbot.engine.types.OBJECT_TYPE import org.utbot.engine.types.STRING_TYPE import org.utbot.engine.types.TypeRegistry import org.utbot.engine.types.TypeResolver +import org.utbot.framework.UtSettings import org.utbot.framework.plugin.api.visible.UtStreamConsumingException import org.utbot.framework.plugin.api.UtStreamConsumingFailure import org.utbot.framework.plugin.api.util.constructor.ValueConstructor import org.utbot.framework.plugin.api.util.isStatic // hack +// IMPORTANT, if these values are used in code for analysis (e.g., in the wrappers), +// they must be a compilation time constant to avoid extra analysis. const val MAX_LIST_SIZE = 10 const val MAX_RESOLVE_LIST_SIZE = 256 const val MAX_STRING_SIZE = 40 -internal const val HARD_MAX_ARRAY_SIZE = 256 +internal const val MAX_STREAM_SIZE = 256 +internal val hardMaxArraySize = UtSettings.maxArraySize internal const val PREFERRED_ARRAY_SIZE = 2 internal const val MIN_PREFERRED_INTEGER = -256 @@ -1303,7 +1307,7 @@ private fun Traverser.arrayToMethodResult( elementType: Type, takeElement: (Int) -> UtExpression ): MethodResult { - val updatedSize = min(size, HARD_MAX_ARRAY_SIZE) + val updatedSize = min(size, hardMaxArraySize) val newAddr = findNewAddr() val length = memory.findArrayLength(newAddr) diff --git a/utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt b/utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt index a82de5812f..a40128503a 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt @@ -132,7 +132,6 @@ import org.utbot.framework.plugin.api.util.findFieldByIdOrNull import org.utbot.framework.plugin.api.util.jField import org.utbot.framework.plugin.api.util.jClass import org.utbot.framework.plugin.api.util.id -import org.utbot.framework.plugin.api.util.isAbstract import org.utbot.framework.plugin.api.util.isConstructor import org.utbot.framework.plugin.api.util.utContext import org.utbot.framework.util.executableId @@ -2014,7 +2013,19 @@ class Traverser( queuedSymbolicStateUpdates += Ge(length, 0).asHardConstraint() workaround(HACK) { if (size.expr is UtBvLiteral) { - softMaxArraySize = min(HARD_MAX_ARRAY_SIZE, max(size.expr.value.toInt(), softMaxArraySize)) + val sizeValue = size.expr.value.toInt() + softMaxArraySize = min(hardMaxArraySize, max(sizeValue, softMaxArraySize)) + + if (sizeValue > hardMaxArraySize) { + logger.warn( + "The engine encountered an array initialization with $sizeValue size." + + " It leads to elimination of paths containing current instruction." + ) + logger.warn("Current instruction: ${environment.state.stmt}") + logger.warn("Please, consider increasing `UtSettings.maxArraySize` value, " + + "currently it is ${UtSettings.maxArraySize}." + ) + } } } queuedSymbolicStateUpdates += Le(length, softMaxArraySize).asHardConstraint() // TODO: fix big array length diff --git a/utbot-sample/src/main/java/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.java b/utbot-sample/src/main/java/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.java new file mode 100644 index 0000000000..968295ef2a --- /dev/null +++ b/utbot-sample/src/main/java/org/utbot/examples/stdlib/JavaIOFileInputStreamCheck.java @@ -0,0 +1,12 @@ +package org.utbot.examples.stdlib; + +import java.io.FileInputStream; +import java.io.IOException; + +public class JavaIOFileInputStreamCheck { + public int read(String s) throws IOException { + java.io.FileInputStream fis = new java.io.FileInputStream(s); + byte[] b = new byte[1000]; + return fis.read(b); + } +} diff --git a/utbot-summary-tests/src/test/kotlin/examples/SummaryTestCaseGeneratorTest.kt b/utbot-summary-tests/src/test/kotlin/examples/SummaryTestCaseGeneratorTest.kt index 88edc7308c..92fd0a8076 100644 --- a/utbot-summary-tests/src/test/kotlin/examples/SummaryTestCaseGeneratorTest.kt +++ b/utbot-summary-tests/src/test/kotlin/examples/SummaryTestCaseGeneratorTest.kt @@ -49,7 +49,8 @@ open class SummaryTestCaseGeneratorTest( summaryKeys: List, methodNames: List = listOf(), displayNames: List = listOf(), - clusterInfo: List> = listOf() + clusterInfo: List> = listOf(), + additionalMockAlwaysClasses: Set = emptySet() ) { workaround(WorkaroundReason.HACK) { // @todo change to the constructor parameter @@ -57,7 +58,11 @@ open class SummaryTestCaseGeneratorTest( checkNpeInNestedMethods = true checkNpeInNestedNotPrivateMethods = true } - val testSet = executionsModel(method.executableId, mockStrategy) + val testSet = executionsModel( + method.executableId, + mockStrategy, + additionalMockAlwaysClasses = additionalMockAlwaysClasses + ) val testSetWithSummarization = listOf(testSet).summarizeAll(searchDirectory, sourceFile = null).single() testSetWithSummarization.executions.checkMatchersWithTextSummary(summaryKeys) diff --git a/utbot-testing/src/main/kotlin/org/utbot/testing/TestSpecificTestCaseGenerator.kt b/utbot-testing/src/main/kotlin/org/utbot/testing/TestSpecificTestCaseGenerator.kt index 71d9e2d233..0348ed4a20 100644 --- a/utbot-testing/src/main/kotlin/org/utbot/testing/TestSpecificTestCaseGenerator.kt +++ b/utbot-testing/src/main/kotlin/org/utbot/testing/TestSpecificTestCaseGenerator.kt @@ -9,6 +9,7 @@ import org.utbot.engine.UtBotSymbolicEngine import org.utbot.engine.util.mockListeners.ForceMockListener import org.utbot.engine.util.mockListeners.ForceStaticMockListener import org.utbot.framework.UtSettings +import org.utbot.framework.plugin.api.ClassId import org.utbot.framework.plugin.api.ExecutableId import org.utbot.framework.plugin.api.MockStrategyApi import org.utbot.framework.plugin.api.TestCaseGenerator @@ -44,7 +45,11 @@ class TestSpecificTestCaseGenerator( private val logger = KotlinLogging.logger {} - fun generate(method: ExecutableId, mockStrategy: MockStrategyApi): UtMethodTestSet { + fun generate( + method: ExecutableId, + mockStrategy: MockStrategyApi, + additionalMockAlwaysClasses: Set = emptySet() + ): UtMethodTestSet { if (isCanceled()) { return UtMethodTestSet(method) } @@ -54,7 +59,7 @@ class TestSpecificTestCaseGenerator( val executions = mutableListOf() val errors = mutableMapOf() - val mockAlwaysDefaults = Mocker.javaDefaultClasses.mapTo(mutableSetOf()) { it.id } + val mockAlwaysDefaults = Mocker.javaDefaultClasses.mapTo(mutableSetOf()) { it.id } + additionalMockAlwaysClasses val defaultTimeEstimator = ExecutionTimeEstimator(UtSettings.utBotGenerationTimeoutInMillis, 1) val forceMockListener = ForceMockListener.create(this, conflictTriggers) diff --git a/utbot-testing/src/main/kotlin/org/utbot/testing/UtModelTestCaseChecker.kt b/utbot-testing/src/main/kotlin/org/utbot/testing/UtModelTestCaseChecker.kt index cb76ef0cbc..a560955d69 100644 --- a/utbot-testing/src/main/kotlin/org/utbot/testing/UtModelTestCaseChecker.kt +++ b/utbot-testing/src/main/kotlin/org/utbot/testing/UtModelTestCaseChecker.kt @@ -52,31 +52,54 @@ abstract class UtModelTestCaseChecker( method: KFunction2<*, *, *>, branches: ExecutionsNumberMatcher, vararg matchers: (UtModel, UtExecutionResult) -> Boolean, - mockStrategy: MockStrategyApi = NO_MOCKS - ) = internalCheck(method, mockStrategy, branches, matchers) + mockStrategy: MockStrategyApi = NO_MOCKS, + additionalMockAlwaysClasses: Set = emptySet() + ) = internalCheck( + method, + mockStrategy, + branches, + matchers, + additionalMockAlwaysClasses = additionalMockAlwaysClasses + ) protected fun check( method: KFunction3<*, *, *, *>, branches: ExecutionsNumberMatcher, vararg matchers: (UtModel, UtModel, UtExecutionResult) -> Boolean, - mockStrategy: MockStrategyApi = NO_MOCKS - ) = internalCheck(method, mockStrategy, branches, matchers) + mockStrategy: MockStrategyApi = NO_MOCKS, + additionalMockAlwaysClasses: Set = emptySet() + ) = internalCheck( + method, + mockStrategy, + branches, + matchers, + additionalMockAlwaysClasses = additionalMockAlwaysClasses + ) protected fun checkStatic( method: KFunction1<*, *>, branches: ExecutionsNumberMatcher, vararg matchers: (UtModel, UtExecutionResult) -> Boolean, - mockStrategy: MockStrategyApi = NO_MOCKS - ) = internalCheck(method, mockStrategy, branches, matchers) + mockStrategy: MockStrategyApi = NO_MOCKS, + additionalMockAlwaysClasses: Set = emptySet() + ) = internalCheck( + method, + mockStrategy, + branches, + matchers, + additionalMockAlwaysClasses = additionalMockAlwaysClasses + ) protected fun checkStaticsAfter( method: KFunction2<*, *, *>, branches: ExecutionsNumberMatcher, vararg matchers: (UtModel, StaticsModelType, UtExecutionResult) -> Boolean, - mockStrategy: MockStrategyApi = NO_MOCKS + mockStrategy: MockStrategyApi = NO_MOCKS, + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, - arguments = ::withStaticsAfter + arguments = ::withStaticsAfter, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) private fun internalCheck( @@ -84,7 +107,8 @@ abstract class UtModelTestCaseChecker( mockStrategy: MockStrategyApi, branches: ExecutionsNumberMatcher, matchers: Array>, - arguments: (UtExecution) -> List = ::withResult + arguments: (UtExecution) -> List = ::withResult, + additionalMockAlwaysClasses: Set = emptySet() ) { workaround(HACK) { // @todo change to the constructor parameter @@ -94,7 +118,7 @@ abstract class UtModelTestCaseChecker( val executableId = method.executableId withUtContext(UtContext(method.declaringClazz.classLoader)) { - val testSet = executions(executableId, mockStrategy) + val testSet = executions(executableId, mockStrategy, additionalMockAlwaysClasses) assertTrue(testSet.errors.isEmpty()) { "We have errors: ${testSet.errors.entries.map { "${it.value}: ${it.key}" }.prettify()}" @@ -138,7 +162,8 @@ abstract class UtModelTestCaseChecker( private fun executions( method: ExecutableId, - mockStrategy: MockStrategyApi + mockStrategy: MockStrategyApi, + additionalMockAlwaysClasses: Set = emptySet() ): UtMethodTestSet { val classLocation = locateClass(method.classId.jClass) if (classLocation != previousClassLocation) { @@ -156,7 +181,7 @@ abstract class UtModelTestCaseChecker( ) } - return testCaseGenerator.generate(method, mockStrategy) + return testCaseGenerator.generate(method, mockStrategy, additionalMockAlwaysClasses) } protected inline fun UtExecutionResult.isException(): Boolean = exceptionOrNull() is T @@ -190,6 +215,7 @@ abstract class UtModelTestCaseChecker( .singleOrNull { it.fieldId == fieldId } fieldAccess?.fieldModel ?: fieldId.type.defaultValueModel() } + else -> error("Can't get ${fieldId.name} from $this") } diff --git a/utbot-testing/src/main/kotlin/org/utbot/testing/UtValueTestCaseChecker.kt b/utbot-testing/src/main/kotlin/org/utbot/testing/UtValueTestCaseChecker.kt index 8a0ae1aa54..381cb9921a 100644 --- a/utbot-testing/src/main/kotlin/org/utbot/testing/UtValueTestCaseChecker.kt +++ b/utbot-testing/src/main/kotlin/org/utbot/testing/UtValueTestCaseChecker.kt @@ -15,6 +15,7 @@ import org.utbot.framework.coverage.Coverage import org.utbot.framework.coverage.counters import org.utbot.framework.coverage.methodCoverage import org.utbot.framework.coverage.toAtLeast +import org.utbot.framework.plugin.api.ClassId import org.utbot.framework.plugin.api.CodegenLanguage import org.utbot.framework.plugin.api.ExecutableId import org.utbot.framework.plugin.api.FieldId @@ -90,10 +91,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet(), ) = internalCheck( method, mockStrategy, branches, matchers, coverage, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun check( @@ -102,10 +105,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun check( @@ -114,10 +119,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun check( @@ -126,10 +133,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun check( @@ -138,10 +147,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check paramsBefore and Result, suitable to check exceptions @@ -151,11 +162,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithException( @@ -164,11 +177,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithException( @@ -177,11 +192,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithException( @@ -190,11 +207,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithException( @@ -203,11 +222,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check this, paramsBefore and result value @@ -217,11 +238,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withThisAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThis( @@ -230,11 +253,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withThisAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThis( @@ -243,11 +268,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withThisAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThis( @@ -256,11 +283,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withThisAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThis( @@ -269,11 +298,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withThisAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThisAndException( @@ -282,11 +313,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withThisAndException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThisAndException( @@ -295,11 +328,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withThisAndException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThisAndException( @@ -308,11 +343,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withThisAndException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThisAndException( @@ -321,11 +358,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withThisAndException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithThisAndException( @@ -334,11 +373,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withThisAndException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks paramsBefore, mocks and result value @@ -348,11 +389,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInStaticMethod( @@ -361,11 +404,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInStaticMethod( @@ -374,11 +419,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInStaticMethod( @@ -387,11 +434,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInStaticMethod( @@ -400,11 +449,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks paramsBefore, mocks and result value @@ -414,11 +465,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocks( @@ -427,11 +480,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocks( @@ -440,11 +495,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocks( @@ -453,11 +510,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocks( @@ -466,11 +525,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, Mocks, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMocks, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check paramsBefore, mocks and instrumentation and result value @@ -480,11 +541,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMocksAndInstrumentation, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksAndInstrumentation( @@ -493,11 +556,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMocksAndInstrumentation, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksAndInstrumentation( @@ -506,11 +571,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMocksAndInstrumentation, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksAndInstrumentation( @@ -519,11 +586,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMocksAndInstrumentation, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksAndInstrumentation( @@ -532,11 +601,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMocksAndInstrumentation, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check this, paramsBefore, mocks, instrumentation and return value @@ -546,11 +617,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMocksInstrumentationAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInstrumentationAndThis( @@ -559,11 +632,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withMocksInstrumentationAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInstrumentationAndThis( @@ -572,11 +647,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withMocksInstrumentationAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInstrumentationAndThis( @@ -585,11 +662,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withMocksInstrumentationAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMocksInstrumentationAndThis( @@ -598,11 +677,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, Mocks, Instrumentation, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withMocksInstrumentationAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks paramsBefore and return value for static methods @@ -612,10 +693,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethod( @@ -624,10 +707,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethod( @@ -636,10 +721,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethod( @@ -648,10 +735,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethod( @@ -660,10 +749,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks paramsBefore and Result, suitable for exceptions check @@ -673,11 +764,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodWithException( @@ -686,11 +779,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodWithException( @@ -699,11 +794,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodWithException( @@ -712,11 +809,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodWithException( @@ -725,11 +824,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withException, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check arguments, statics and return value @@ -739,11 +840,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStatics( @@ -752,11 +855,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStatics( @@ -765,11 +870,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStatics( @@ -778,11 +885,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStatics( @@ -791,11 +900,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check arguments, statics and Result for exceptions check @@ -805,11 +916,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withStaticsBeforeAndExceptions, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAndException( @@ -818,11 +931,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withStaticsBeforeAndExceptions, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAndException( @@ -831,11 +946,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withStaticsBeforeAndExceptions, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAndException( @@ -844,11 +961,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withStaticsBeforeAndExceptions, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAndException( @@ -857,11 +976,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, Result) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withStaticsBeforeAndExceptions, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAfter( @@ -870,11 +991,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAfter( @@ -883,11 +1006,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAfter( @@ -896,11 +1021,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAfter( @@ -909,11 +1036,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsAfter( @@ -922,11 +1051,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkThisAndStaticsAfter( @@ -935,11 +1066,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withThisAndStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkThisAndStaticsAfter( @@ -948,11 +1081,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withThisAndStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkThisAndStaticsAfter( @@ -961,11 +1096,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withThisAndStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkThisAndStaticsAfter( @@ -974,11 +1111,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withThisAndStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkThisAndStaticsAfter( @@ -987,11 +1126,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withThisAndStaticsAfter, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks paramsBefore, staticsBefore and return value for static methods @@ -1001,11 +1142,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsInStaticMethod( @@ -1014,11 +1157,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsInStaticMethod( @@ -1027,11 +1172,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsInStaticMethod( @@ -1040,11 +1187,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsInStaticMethod( @@ -1053,11 +1202,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsInStaticMethod( @@ -1066,11 +1217,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, T5, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withStaticsBefore, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // check this, arguments and result value @@ -1080,11 +1233,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withThisStaticsBeforeAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsWithThis( @@ -1093,11 +1248,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withThisStaticsBeforeAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsWithThis( @@ -1106,11 +1263,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withThisStaticsBeforeAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsWithThis( @@ -1119,11 +1278,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withThisStaticsBeforeAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticsWithThis( @@ -1132,11 +1293,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withThisStaticsBeforeAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutationsAndResult( @@ -1145,11 +1308,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withParamsMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutationsAndResult( @@ -1158,11 +1323,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T1, T2, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withParamsMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutationsAndResult( @@ -1171,11 +1338,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T1, T2, T3, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withParamsMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutationsAndResult( @@ -1184,11 +1353,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, T1, T2, T3, T4, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withParamsMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks mutations in the parameters @@ -1198,11 +1369,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withParamsMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutations( @@ -1211,11 +1384,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T1, T2) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withParamsMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutations( @@ -1224,11 +1399,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T1, T2, T3) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withParamsMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkParamsMutations( @@ -1237,11 +1414,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, T1, T2, T3, T4) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withParamsMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks mutations in the parameters and statics for static method @@ -1251,11 +1430,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutation( @@ -1264,11 +1445,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, T, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutation( @@ -1277,11 +1460,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, T1, T2, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutation( @@ -1290,11 +1475,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, T1, T2, T3, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutation( @@ -1303,11 +1490,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, T1, T2, T3, T4, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutationAndResult( @@ -1316,11 +1505,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutationAndResult( @@ -1329,11 +1520,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutationAndResult( @@ -1342,11 +1535,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutationAndResult( @@ -1355,11 +1550,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkStaticMethodMutationAndResult( @@ -1368,11 +1565,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) @@ -1383,11 +1582,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, T, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutations( @@ -1396,11 +1597,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, T1, T2, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutations( @@ -1409,11 +1612,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, T1, T2, T3, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutations( @@ -1422,11 +1627,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, T1, T2, T3, T4, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMutations, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks mutations in the parameters and statics @@ -1436,11 +1643,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (StaticsType, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutationsAndResult( @@ -1449,11 +1658,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, T, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutationsAndResult( @@ -1462,11 +1673,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, StaticsType, T1, T2, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutationsAndResult( @@ -1475,11 +1688,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, StaticsType, T1, T2, T3, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkMutationsAndResult( @@ -1488,11 +1703,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, StaticsType, T1, T2, T3, T4, StaticsType, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, arguments = ::withMutationsAndResult, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) // checks mutations in this, parameters and statics @@ -1502,11 +1719,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, StaticsType, T, StaticsType, R) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, arguments = ::withMutationsAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkAllMutationsWithThis( @@ -1515,11 +1734,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, StaticsType, T, T1, StaticsType, R) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, arguments = ::withMutationsAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkAllMutationsWithThis( @@ -1528,11 +1749,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, StaticsType, T, T1, T2, StaticsType, R) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, arguments = ::withMutationsAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkAllMutationsWithThis( @@ -1541,11 +1764,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, StaticsType, T, T1, T2, T3, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, arguments = ::withMutationsAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkAllMutationsWithThis( @@ -1554,11 +1779,13 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, T1, T2, T3, T4, StaticsType, T, T1, T2, T3, T4, StaticsType) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, T1::class, T2::class, T3::class, T4::class, arguments = ::withMutationsAndThis, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) //region checks substituting statics with symbolic variable or not @@ -1568,10 +1795,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithoutStaticsSubstitution( @@ -1580,10 +1809,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithoutStaticsSubstitution( @@ -1592,10 +1823,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithoutStaticsSubstitution( @@ -1604,10 +1837,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) protected inline fun checkWithoutStaticsSubstitution( @@ -1616,10 +1851,12 @@ abstract class UtValueTestCaseChecker( vararg matchers: (T1, T2, T3, T4, R?) -> Boolean, coverage: CoverageMatcher = Full, mockStrategy: MockStrategyApi = NO_MOCKS, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) = internalCheck( method, mockStrategy, branches, matchers, coverage, T1::class, T2::class, T3::class, T4::class, - additionalDependencies = additionalDependencies + additionalDependencies = additionalDependencies, + additionalMockAlwaysClasses = additionalMockAlwaysClasses ) //endregion @@ -1630,7 +1867,11 @@ abstract class UtValueTestCaseChecker( * or just generate one top-level test class * @see [ClassWithStaticAndInnerClassesTest] */ - fun checkAllCombinations(method: KFunction<*>, generateWithNested: Boolean = false) { + fun checkAllCombinations( + method: KFunction<*>, + generateWithNested: Boolean = false, + additionalMockAlwaysClasses: Set = emptySet() + ) { val failed = mutableListOf() val succeeded = mutableListOf() @@ -1638,7 +1879,7 @@ abstract class UtValueTestCaseChecker( .filterNot { it.isDisabled } .forEach { config -> runCatching { - internalCheckForCodeGeneration(method, config, generateWithNested) + internalCheckForCodeGeneration(method, config, generateWithNested, additionalMockAlwaysClasses) }.onFailure { failed += config }.onSuccess { @@ -1661,7 +1902,8 @@ abstract class UtValueTestCaseChecker( private fun internalCheckForCodeGeneration( method: KFunction<*>, testFrameworkConfiguration: TestFrameworkConfiguration, - generateWithNested: Boolean + generateWithNested: Boolean, + additionalMockAlwaysClasses: Set = emptySet() ) { withSettingsFromTestFrameworkConfiguration(testFrameworkConfiguration) { with(testFrameworkConfiguration) { @@ -1677,7 +1919,7 @@ abstract class UtValueTestCaseChecker( MethodWithMockStrategy(executableId, mockStrategy, resetNonFinalFieldsAfterClinit) val (testSet, coverage) = analyzedMethods.getOrPut(methodWithStrategy) { - walk(executableId, mockStrategy) + walk(executableId, mockStrategy, additionalMockAlwaysClasses = additionalMockAlwaysClasses) } // if force mocking took place in parametrized test generation, @@ -1715,7 +1957,8 @@ abstract class UtValueTestCaseChecker( coverageMatcher: CoverageMatcher, vararg classes: KClass<*>, noinline arguments: (UtValueExecution<*>) -> List = ::withResult, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ) { if (UtSettings.checkAllCombinationsForEveryTestInSamples) { checkAllCombinations(method) @@ -1728,9 +1971,16 @@ abstract class UtValueTestCaseChecker( computeAdditionalDependenciesClasspathAndBuildDir(executableId.classId.jClass, additionalDependencies) val (testSet, coverage) = if (coverageMatcher is DoNotCalculate) { - MethodResult(executions(executableId, mockStrategy, additionalDependenciesClassPath), Coverage()) + val testSet = executions( + executableId, + mockStrategy, + additionalDependenciesClassPath, + additionalMockAlwaysClasses + ) + + MethodResult(testSet, Coverage()) } else { - walk(executableId, mockStrategy, additionalDependenciesClassPath) + walk(executableId, mockStrategy, additionalDependenciesClassPath, additionalMockAlwaysClasses) } listOf(testSet).summarizeAll(searchDirectory, sourceFile = null) val valueTestCase = testSet.toValueTestCase() @@ -1807,9 +2057,10 @@ abstract class UtValueTestCaseChecker( fun walk( method: ExecutableId, mockStrategy: MockStrategyApi, - additionalDependenciesClassPath: String = "" + additionalDependenciesClassPath: String = "", + additionalMockAlwaysClasses: Set = emptySet() ): MethodResult { - val testSet = executions(method, mockStrategy, additionalDependenciesClassPath) + val testSet = executions(method, mockStrategy, additionalDependenciesClassPath, additionalMockAlwaysClasses) val methodCoverage = methodCoverage( method, testSet.toValueTestCase().executions, @@ -1821,7 +2072,8 @@ abstract class UtValueTestCaseChecker( fun executions( method: ExecutableId, mockStrategy: MockStrategyApi, - additionalDependenciesClassPath: String + additionalDependenciesClassPath: String, + additionalMockAlwaysClasses: Set = emptySet() ): UtMethodTestSet { val buildInfo = CodeGenerationIntegrationTest.Companion.BuildInfo(buildDir, additionalDependenciesClassPath) @@ -1833,13 +2085,14 @@ abstract class UtValueTestCaseChecker( System.getProperty("java.class.path") ) } - return testCaseGenerator.generate(method, mockStrategy) + return testCaseGenerator.generate(method, mockStrategy, additionalMockAlwaysClasses) } fun executionsModel( method: ExecutableId, mockStrategy: MockStrategyApi, - additionalDependencies: Array> = emptyArray() + additionalDependencies: Array> = emptyArray(), + additionalMockAlwaysClasses: Set = emptySet() ): UtMethodTestSet { val additionalDependenciesClassPath = computeAdditionalDependenciesClasspathAndBuildDir(method.classId.jClass, additionalDependencies) @@ -1853,7 +2106,7 @@ abstract class UtValueTestCaseChecker( System.getProperty("java.class.path") ) } - return testCaseGenerator.generate(method, mockStrategy) + return testCaseGenerator.generate(method, mockStrategy, additionalMockAlwaysClasses) } }