Skip to content

Commit f5aa849

Browse files
authored
Merge branch 'main' into damtev/concrete_enums
2 parents 689f701 + b239b2d commit f5aa849

9 files changed

Lines changed: 203 additions & 172 deletions

File tree

utbot-framework/src/main/kotlin/org/utbot/framework/assemble/AssembleModelGenerator.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@ class AssembleModelGenerator(private val methodUnderTest: UtMethod<*>) {
246246
if (fieldId.isStatic) {
247247
throw AssembleException("Static field $fieldId can't be set in an object of the class $classId")
248248
}
249+
if (fieldId.isFinal) {
250+
throw AssembleException("Final field $fieldId can't be set in an object of the class $classId")
251+
}
249252
//fill field value if it hasn't been filled by constructor, and it is not default
250253
if (fieldId in constructorInfo.affectedFields ||
251254
(fieldId !in constructorInfo.setFields && !fieldModel.hasDefaultValue())

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/Domain.kt

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ const val JUNIT5_PARAMETERIZED_PACKAGE = "org.junit.jupiter.params"
7373

7474
//JUnit5 imports
7575
private const val TEST_NG_ASSERTIONS = "org.testng.Assert"
76+
private const val TEST_NG_ARRAYS_ASSERTIONS = "org.testng.internal.junit.ArrayAsserts"
7677
private const val JUNIT5_ASSERTIONS = "org.junit.jupiter.api.Assertions"
7778
private const val JUNIT4_ASSERTIONS = "org.junit.Assert"
7879

@@ -170,6 +171,7 @@ sealed class TestFramework(
170171
var isInstalled: Boolean = false
171172
abstract val mainPackage: String
172173
abstract val assertionsClass: ClassId
174+
abstract val arraysAssertionsClass: ClassId
173175
abstract val testAnnotation: String
174176
abstract val testAnnotationId: ClassId
175177
abstract val testAnnotationFqn: String
@@ -186,23 +188,23 @@ sealed class TestFramework(
186188

187189
val assertDoubleEquals by lazy { assertionId("assertEquals", doubleClassId, doubleClassId, doubleClassId) }
188190

189-
val assertArrayEquals by lazy { assertionId("assertArrayEquals", Array<Any>::class.id, Array<Any>::class.id) }
191+
val assertArrayEquals by lazy { arrayAssertionId("assertArrayEquals", Array<Any>::class.id, Array<Any>::class.id) }
190192

191-
val assertBooleanArrayEquals by lazy { assertionId("assertArrayEquals", booleanArrayClassId, booleanArrayClassId) }
193+
open val assertBooleanArrayEquals by lazy { assertionId("assertArrayEquals", booleanArrayClassId, booleanArrayClassId) }
192194

193-
val assertByteArrayEquals by lazy { assertionId("assertArrayEquals", byteArrayClassId, byteArrayClassId) }
195+
val assertByteArrayEquals by lazy { arrayAssertionId("assertArrayEquals", byteArrayClassId, byteArrayClassId) }
194196

195-
val assertCharArrayEquals by lazy { assertionId("assertArrayEquals", charArrayClassId, charArrayClassId) }
197+
val assertCharArrayEquals by lazy { arrayAssertionId("assertArrayEquals", charArrayClassId, charArrayClassId) }
196198

197-
val assertShortArrayEquals by lazy { assertionId("assertArrayEquals", shortArrayClassId, shortArrayClassId) }
199+
val assertShortArrayEquals by lazy { arrayAssertionId("assertArrayEquals", shortArrayClassId, shortArrayClassId) }
198200

199-
val assertIntArrayEquals by lazy { assertionId("assertArrayEquals", intArrayClassId, intArrayClassId) }
201+
val assertIntArrayEquals by lazy { arrayAssertionId("assertArrayEquals", intArrayClassId, intArrayClassId) }
200202

201-
val assertLongArrayEquals by lazy { assertionId("assertArrayEquals", longArrayClassId, longArrayClassId) }
203+
val assertLongArrayEquals by lazy { arrayAssertionId("assertArrayEquals", longArrayClassId, longArrayClassId) }
202204

203-
val assertFloatArrayEquals by lazy { assertionId("assertArrayEquals", floatArrayClassId, floatArrayClassId, floatClassId) }
205+
val assertFloatArrayEquals by lazy { arrayAssertionId("assertArrayEquals", floatArrayClassId, floatArrayClassId, floatClassId) }
204206

205-
val assertDoubleArrayEquals by lazy { assertionId("assertArrayEquals", doubleArrayClassId, doubleArrayClassId, doubleClassId) }
207+
val assertDoubleArrayEquals by lazy { arrayAssertionId("assertArrayEquals", doubleArrayClassId, doubleArrayClassId, doubleClassId) }
206208

207209
val assertNull by lazy { assertionId("assertNull", objectClassId) }
208210

@@ -212,8 +214,10 @@ sealed class TestFramework(
212214

213215
val assertNotEquals by lazy { assertionId("assertNotEquals", objectClassId, objectClassId) }
214216

215-
private fun assertionId(name: String, vararg params: ClassId): MethodId =
217+
protected fun assertionId(name: String, vararg params: ClassId): MethodId =
216218
builtinStaticMethodId(assertionsClass, name, voidClassId, *params)
219+
private fun arrayAssertionId(name: String, vararg params: ClassId): MethodId =
220+
builtinStaticMethodId(arraysAssertionsClass, name, voidClassId, *params)
217221

218222
abstract fun getRunTestsCommand(
219223
executionInvoke: String,
@@ -251,6 +255,14 @@ object TestNg : TestFramework(displayName = "TestNG") {
251255
simpleName = "Assert"
252256
)
253257

258+
override val arraysAssertionsClass: ClassId = BuiltinClassId(
259+
name = TEST_NG_ARRAYS_ASSERTIONS,
260+
canonicalName = TEST_NG_ARRAYS_ASSERTIONS,
261+
simpleName = "ArrayAsserts"
262+
)
263+
264+
override val assertBooleanArrayEquals by lazy { assertionId("assertEquals", booleanArrayClassId, booleanArrayClassId) }
265+
254266
val throwingRunnableClassId = BuiltinClassId(
255267
name = "${assertionsClass.name}\$ThrowingRunnable",
256268
canonicalName = "${assertionsClass.canonicalName}.ThrowingRunnable",
@@ -353,6 +365,7 @@ object Junit4 : TestFramework("JUnit4") {
353365
canonicalName = JUNIT4_ASSERTIONS,
354366
simpleName = "Assert"
355367
)
368+
override val arraysAssertionsClass = assertionsClass
356369

357370
val ignoreAnnotationClassId = with("$JUNIT4_PACKAGE.Ignore") {
358371
BuiltinClassId(
@@ -421,6 +434,8 @@ object Junit5 : TestFramework("JUnit5") {
421434
simpleName = "Assertions"
422435
)
423436

437+
override val arraysAssertionsClass = assertionsClass
438+
424439
val assertThrows = builtinStaticMethodId(
425440
classId = assertionsClass,
426441
name = "assertThrows",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.utbot.examples.assemble;
2+
3+
/**
4+
* A class with a FINAL field allowing direct access.
5+
*/
6+
public class DirectAccessFinal {
7+
public final int[] array = {1, 2};
8+
}

utbot-framework/src/test/kotlin/org/utbot/framework/assemble/AssembleModelGeneratorTests.kt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package org.utbot.framework.assemble
22

3-
import org.utbot.examples.assemble.AssembleTestUtils
4-
import org.utbot.examples.assemble.ComplexField
5-
import org.utbot.examples.assemble.DirectAccess
6-
import org.utbot.examples.assemble.DirectAccessAndSetter
7-
import org.utbot.examples.assemble.InheritedField
8-
import org.utbot.examples.assemble.ListItem
9-
import org.utbot.examples.assemble.NoModifier
10-
import org.utbot.examples.assemble.PackagePrivateFields
11-
import org.utbot.examples.assemble.PrimitiveFields
123
import org.utbot.examples.assemble.arrays.ArrayOfComplexArrays
134
import org.utbot.examples.assemble.arrays.ArrayOfPrimitiveArrays
145
import org.utbot.examples.assemble.arrays.AssignedArray
@@ -54,6 +45,7 @@ import org.junit.jupiter.api.Assertions.assertTrue
5445
import org.junit.jupiter.api.BeforeEach
5546
import org.junit.jupiter.api.Disabled
5647
import org.junit.jupiter.api.Test
48+
import org.utbot.examples.assemble.*
5749

5850
/**
5951
* Test classes must be located in the same folder as [AssembleTestUtils] class.
@@ -337,6 +329,26 @@ class AssembleModelGeneratorTests {
337329
createModelAndAssert(compositeModel, expectedRepresentation)
338330
}
339331

332+
@Test
333+
fun testOnObjectWithFinalFields() {
334+
val testClassId = DirectAccessFinal::class.id
335+
336+
val arrayObjectFields = fields(
337+
testClassId,
338+
"array" to UtArrayModel(
339+
modelIdCounter.incrementAndGet(),
340+
intArrayClassId,
341+
length = 2,
342+
UtPrimitiveModel(0),
343+
mutableMapOf(0 to UtPrimitiveModel(1), 1 to UtPrimitiveModel(2)),
344+
),
345+
)
346+
val compositeModel =
347+
UtCompositeModel(modelIdCounter.incrementAndGet(), testClassId, isMock = false, arrayObjectFields)
348+
349+
createModelAndAssert(compositeModel, null)
350+
}
351+
340352
//region inheritance_tests
341353

342354
@Test

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/actions/GenerateFromEditorAction.kt

Lines changed: 0 additions & 53 deletions
This file was deleted.

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/actions/GenerateFromProjectTreeAction.kt

Lines changed: 0 additions & 84 deletions
This file was deleted.

0 commit comments

Comments
 (0)