Skip to content

Commit 157befd

Browse files
Fuzzing generates impossible UtAssembleModels #1684 (#1703)
Process "Iterable but not a Collection" with ObjectValueProvider
1 parent c9d2fd5 commit 157befd

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/IdUtil.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ val atomicIntegerGetAndIncrement = MethodId(atomicIntegerClassId, "getAndIncreme
301301

302302
val iterableClassId = java.lang.Iterable::class.id
303303
val mapClassId = java.util.Map::class.id
304+
val collectionClassId = java.util.Collection::class.id
304305

305306
val baseStreamClassId = java.util.stream.BaseStream::class.id
306307
val streamClassId = java.util.stream.Stream::class.id
@@ -405,6 +406,12 @@ val ClassId.isMap: Boolean
405406
val ClassId.isIterableOrMap: Boolean
406407
get() = isIterable || isMap
407408

409+
val ClassId.isCollection: Boolean
410+
get() = isSubtypeOf(collectionClassId)
411+
412+
val ClassId.isCollectionOrMap: Boolean
413+
get() = isCollection || isMap
414+
408415
val ClassId.isEnum: Boolean
409416
get() = jClass.isEnum
410417

utbot-fuzzers/src/main/kotlin/org/utbot/fuzzing/providers/Collections.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,10 @@ class MapValueProvider(
107107

108108
class ListSetValueProvider(
109109
idGenerator: IdGenerator<Int>
110-
) : CollectionValueProvider(idGenerator, java.lang.Iterable::class.id) {
110+
) : CollectionValueProvider(idGenerator, java.util.Collection::class.id) {
111111
override fun resolveType(description: FuzzedDescription, type: FuzzedType) = sequence {
112112
val generic = type.generics.firstOrNull() ?: FuzzedType(objectClassId)
113113
when (type.classId) {
114-
java.lang.Iterable::class.id -> {
115-
yield(FuzzedType(java.util.ArrayList::class.id, listOf(generic)))
116-
yield(FuzzedType(java.util.HashSet::class.id, listOf(generic)))
117-
}
118114
java.util.Queue::class.id,
119115
java.util.Deque::class.id-> {
120116
yield(FuzzedType(java.util.ArrayDeque::class.id, listOf(generic)))

utbot-fuzzers/src/main/kotlin/org/utbot/fuzzing/providers/Objects.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class ObjectValueProvider(
9797

9898
private fun isIgnored(type: ClassId): Boolean {
9999
return unwantedConstructorsClasses.contains(type)
100-
|| type.isIterableOrMap
100+
|| type.isCollectionOrMap
101101
|| type.isPrimitiveWrapper
102102
|| type.isEnum
103103
|| type.isAbstract

0 commit comments

Comments
 (0)