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