Skip to content

Commit 4e0967a

Browse files
committed
rewrite quickcheck on Kotlin
1 parent c9cee75 commit 4e0967a

File tree

134 files changed

+4453
-6012
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+4453
-6012
lines changed

utbot-framework/src/main/java/org/utbot/quickcheck/internal/Comparables.java

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

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/DataGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ object DataGenerator {
4545
}
4646

4747
fun generate(
48-
generator: Generator<*>?,
48+
generator: Generator?,
4949
parameter: Parameter,
5050
random: SourceOfRandomness,
5151
status: GenerationStatus,

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/FField.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ data class FField(
1111
val field: Field?,
1212
val value: Any?,
1313
val resolvedType: Type,
14-
val generator: Generator<*>?,
14+
val generator: Generator?,
1515
val classId: ClassId,
1616
val subFields: List<FField>,
1717
var isBlocked: Boolean,
@@ -21,7 +21,7 @@ data class FField(
2121
field: Field?,
2222
value: Any?,
2323
resolvedType: Type,
24-
generator: Generator<*>?,
24+
generator: Generator?,
2525
subFields: List<FField>,
2626
isBlocked: Boolean
2727
) : this(
@@ -38,7 +38,7 @@ data class FField(
3838
field: Field?,
3939
value: Any?,
4040
resolvedType: Type,
41-
generator: Generator<*>?,
41+
generator: Generator?,
4242
subFields: List<FField>,
4343
) : this(
4444
field,
@@ -54,7 +54,7 @@ data class FField(
5454
field: Field?,
5555
value: Any?,
5656
resolvedType: Type,
57-
generator: Generator<*>?,
57+
generator: Generator?,
5858
) : this(
5959
field,
6060
value,

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/FParameter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ data class FParameter(
1515
val parameter: Parameter,
1616
val value: Any?,
1717
var utModel: UtModel,
18-
val generator: Generator<*>?,
18+
val generator: Generator?,
1919
val classId: ClassId,
2020
val fields: List<FField>
2121
) {
@@ -24,14 +24,14 @@ data class FParameter(
2424
parameter: Parameter,
2525
value: Any?,
2626
utModel: UtModel,
27-
generator: Generator<*>?
27+
generator: Generator?
2828
) : this(parameter, value, utModel, generator, classIdForType(parameter.type), emptyList())
2929

3030
constructor(
3131
parameter: Parameter,
3232
value: Any?,
3333
utModel: UtModel,
34-
generator: Generator<*>?,
34+
generator: Generator?,
3535
fields: List<FField>
3636
) : this(parameter, value, utModel, generator, classIdForType(parameter.type), fields)
3737

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/GeneratorConfigurator.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.utbot.quickcheck.generator.java.util.CollectionGenerator
77
import org.utbot.quickcheck.generator.java.util.MapGenerator
88
import org.utbot.quickcheck.internal.generator.ArrayGenerator
99
import org.utbot.engine.greyboxfuzzer.util.getTrue
10-
import org.utbot.engine.greyboxfuzzer.util.setFieldValue
1110
import org.utbot.quickcheck.generator.java.lang.*
1211
import kotlin.random.Random
1312

@@ -66,13 +65,13 @@ object GeneratorConfigurator {
6665
inRangeAnnotationInstance = InRange::class.constructors.first().callBy(inRangeAnnotationParams)
6766
}
6867

69-
fun configureGenerator(generator: Generator<*>, prob: Int) {
68+
fun configureGenerator(generator: Generator, prob: Int) {
7069
(listOf(generator) + generator.getAllComponents()).forEach {
7170
if (Random.getTrue(prob)) handleGenerator(it)
7271
}
7372
}
7473

75-
private fun handleGenerator(generator: Generator<*>) =
74+
private fun handleGenerator(generator: Generator) =
7675
when (generator) {
7776
is IntegerGenerator -> generator.configure(inRangeAnnotationInstance)
7877
is ByteGenerator -> generator.configure(inRangeAnnotationInstance)
@@ -88,7 +87,7 @@ object GeneratorConfigurator {
8887
is PrimitiveFloatGenerator -> generator.configure(inRangeAnnotationInstance)
8988
is PrimitiveDoubleGenerator -> generator.configure(inRangeAnnotationInstance)
9089
is PrimitiveLongGenerator -> generator.configure(inRangeAnnotationInstance)
91-
is CollectionGenerator<*> -> generator.configure(sizeAnnotationInstance)
90+
is CollectionGenerator -> generator.configure(sizeAnnotationInstance)
9291
is ArrayGenerator -> generator.configure(sizeAnnotationInstance)
9392
is MapGenerator -> generator.configure(sizeAnnotationInstance)
9493
else -> Unit

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/QuickCheckExtensions.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ import ru.vyarus.java.generics.resolver.context.MethodGenericsContext
2525
import java.lang.reflect.*
2626

2727

28-
fun Generator<*>.getAllComponents(): List<Generator<*>> {
29-
val queue = ArrayDeque<Generator<*>>()
30-
val res = mutableListOf<Generator<*>>()
28+
fun Generator.getAllComponents(): List<Generator> {
29+
val queue = ArrayDeque<Generator>()
30+
val res = mutableListOf<Generator>()
3131
this.getComponents().forEach { queue.add(it) }
3232
while (queue.isNotEmpty()) {
3333
val comp = queue.removeFirst()
@@ -37,9 +37,9 @@ fun Generator<*>.getAllComponents(): List<Generator<*>> {
3737
return res
3838
}
3939

40-
fun Generator<*>.getComponents(): List<Generator<*>> =
40+
fun Generator.getComponents(): List<Generator> =
4141
when (this) {
42-
is ComponentizedGenerator<*> -> this.componentGenerators()
42+
is ComponentizedGenerator -> this.componentGenerators()
4343
is ArrayGenerator -> listOf(this.component)
4444
else -> emptyList()
4545
}
@@ -58,19 +58,19 @@ fun GeneratorRepository.produceUserClassGenerator(
5858
return userClassGenerator
5959
}
6060

61-
fun GeneratorRepository.getOrProduceGenerator(field: Field, depth: Int = 0): Generator<*>? =
61+
fun GeneratorRepository.getOrProduceGenerator(field: Field, depth: Int = 0): Generator? =
6262
getOrProduceGenerator(ParameterTypeContext.forField(field), depth)
6363

64-
fun GeneratorRepository.getOrProduceGenerator(param: Parameter, parameterIndex: Int, depth: Int = 0): Generator<*>? =
64+
fun GeneratorRepository.getOrProduceGenerator(param: Parameter, parameterIndex: Int, depth: Int = 0): Generator? =
6565
getOrProduceGenerator(param.createParameterTypeContext(parameterIndex), depth)
6666

67-
fun GeneratorRepository.getOrProduceGenerator(clazz: Class<*>, depth: Int = 0): Generator<*>? =
67+
fun GeneratorRepository.getOrProduceGenerator(clazz: Class<*>, depth: Int = 0): Generator? =
6868
getOrProduceGenerator(clazz.createParameterTypeContext(), depth)
6969

7070
fun GeneratorRepository.getOrProduceGenerator(
7171
parameterTypeContext: ParameterTypeContext,
7272
depth: Int
73-
): Generator<*>? {
73+
): Generator? {
7474
val producedUserClassesGenerators = mutableListOf<UserClassGenerator>()
7575
parameterTypeContext.getAllSubParameterTypeContexts(GreyBoxFuzzerGenerators.sourceOfRandomness).reversed()
7676
.forEach { typeContext ->

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/UTGeneratorRepository.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ import org.utbot.quickcheck.internal.generator.GeneratorRepository
66
import org.utbot.quickcheck.internal.generator.LambdaGenerator
77
import org.utbot.quickcheck.internal.generator.MarkerInterfaceGenerator
88
import org.utbot.quickcheck.random.SourceOfRandomness
9-
import org.utbot.engine.greyboxfuzzer.util.toClass
109
import org.utbot.engine.logger
10+
import org.utbot.quickcheck.internal.Zilch
1111

1212
class UTGeneratorRepository(random: SourceOfRandomness) : GeneratorRepository(random) {
1313

14-
override fun generatorFor(parameter: ParameterTypeContext): Generator<*>? {
14+
override fun generatorFor(parameter: ParameterTypeContext): Generator {
1515
logger.debug { "TRYING TO GET GENERATOR FOR ${parameter.resolved}" }
16-
if (parameter.resolved.name == "org.utbot.quickcheck.internal.Zilch") return null
16+
if (parameter.resolved.name == Zilch::class.java.name) return TODO("null")
1717
val generator = super.generatorFor(parameter)
18-
if (generator is MarkerInterfaceGenerator<*>) {
18+
if (generator is MarkerInterfaceGenerator) {
1919
throw IllegalArgumentException(
2020
"Cannot find generator for " + parameter.name()
2121
+ " of type " + parameter.type().typeName
2222
)
23-
} else if (generator is LambdaGenerator<*, *>) {
24-
return null
23+
} else if (generator is LambdaGenerator<*>) {
24+
return TODO("null")
2525
}
2626
return generator
2727
}

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/set/HashSetGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ package org.utbot.engine.greyboxfuzzer.generator.set
22

33
import org.utbot.quickcheck.generator.java.util.SetGenerator
44

5-
class HashSetGenerator: SetGenerator<HashSet<*>>(HashSet::class.java)
5+
class HashSetGenerator: SetGenerator(HashSet::class.java)

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/UserClassGenerator.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@ import org.utbot.framework.plugin.api.UtNullModel
1717
import org.utbot.framework.plugin.api.util.id
1818
import java.lang.reflect.*
1919

20-
class UserClassGenerator : ComponentizedGenerator<Any>(Any::class.java) {
20+
class UserClassGenerator : ComponentizedGenerator(Any::class.java) {
2121

2222
var clazz: Class<*>? = null
2323
var parameterTypeContext: ParameterTypeContext? = null
2424
var depth = 0
2525
var generationMethod = GenerationMethod.ANY
2626

27-
override fun copy(): Generator<Any> {
27+
override fun copy(): Generator {
2828
return UserClassGenerator().also {
2929
it.clazz = clazz
3030
it.depth = depth
3131
it.parameterTypeContext = parameterTypeContext
3232
}
3333
}
3434

35-
override fun canGenerateForParametersOfTypes(typeParameters: MutableList<TypeParameter<*>>?): Boolean {
35+
override fun canGenerateForParametersOfTypes(typeParameters: List<TypeParameter<*>>): Boolean {
3636
return true
3737
}
3838

@@ -45,9 +45,9 @@ class UserClassGenerator : ComponentizedGenerator<Any>(Any::class.java) {
4545
return generate(random, status)
4646
}
4747

48-
override fun generate(random: SourceOfRandomness, status: GenerationStatus): UtModel? {
48+
override fun generate(random: SourceOfRandomness, status: GenerationStatus): UtModel {
4949
logger.debug { "Trying to generate ${parameterTypeContext!!.resolved}. Current depth depth: $depth" }
50-
if (depth >= GreyBoxFuzzerGenerators.maxDepthOfGeneration) return null
50+
if (depth >= GreyBoxFuzzerGenerators.maxDepthOfGeneration) return TODO("null")
5151
val immutableClazz = clazz!!
5252
if (immutableClazz == Any::class.java) return ObjectGenerator(random, status).generate()
5353
if (immutableClazz == Class::class.java) return ReflectionClassGenerator(parameterTypeContext!!).generate()

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/ClassesInstanceGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ class ClassesInstanceGenerator(
1515
private val genStatus: GenerationStatus,
1616
private val depth: Int
1717
): InstanceGenerator {
18-
override fun generate(): UtModel? {
18+
override fun generate(): UtModel {
1919
val typeOfGenerations = when (generationMethod) {
2020
GenerationMethod.CONSTRUCTOR -> mutableListOf('c')
2121
GenerationMethod.STATIC -> mutableListOf('s')
2222
else -> mutableListOf('c', 'c', 's')
2323
}
2424
while (typeOfGenerations.isNotEmpty()) {
25-
val randomTypeOfGeneration = typeOfGenerations.randomOrNull() ?: return null
25+
val randomTypeOfGeneration = typeOfGenerations.randomOrNull() ?: return TODO("null")
2626
logger.debug { "Type of generation: $randomTypeOfGeneration" }
2727
val generatedInstance =
2828
when (randomTypeOfGeneration) {
@@ -45,6 +45,6 @@ class ClassesInstanceGenerator(
4545
}
4646
generatedInstance?.let { return it } ?: typeOfGenerations.removeIf { it == randomTypeOfGeneration }
4747
}
48-
return null
48+
return TODO("null")
4949
}
5050
}

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/ConstructorBasedInstanceGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ class ConstructorBasedInstanceGenerator(
2020
private val depth: Int
2121
): InstanceGenerator {
2222

23-
override fun generate(): UtModel? {
24-
val constructor = chooseRandomConstructor(clazz) ?: return null
23+
override fun generate(): UtModel {
24+
val constructor = chooseRandomConstructor(clazz) ?: return TODO("null")
2525
val resolvedConstructor =
2626
//In case if we can not resolve constructor
2727
gctx.constructor(constructor).let {

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/InstanceGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ package org.utbot.engine.greyboxfuzzer.generator.userclasses.generator
33
import org.utbot.framework.plugin.api.UtModel
44

55
interface InstanceGenerator {
6-
fun generate(): UtModel?
6+
fun generate(): UtModel
77
}

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/InterfaceImplementationsInstanceGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class InterfaceImplementationsInstanceGenerator(
1717
private val generationStatus: GenerationStatus,
1818
private val depth: Int
1919
) : InstanceGenerator {
20-
override fun generate(): UtModel? {
20+
override fun generate(): UtModel {
2121
//Try to generate with statics with some probability
22-
val clazz = resolvedType.toClass() ?: return null
22+
val clazz = resolvedType.toClass() ?: return TODO("null")
2323
if (Random.getTrue(50)) {
2424
StaticsBasedInstanceGenerator(
2525
clazz,
@@ -31,7 +31,7 @@ class InterfaceImplementationsInstanceGenerator(
3131
return it
3232
}
3333
}
34-
val genericsContext = getRandomImplementerGenericContext(clazz, resolvedType) ?: return null
34+
val genericsContext = getRandomImplementerGenericContext(clazz, resolvedType) ?: return TODO("null")
3535
return ClassesInstanceGenerator(
3636
genericsContext.currentClass(),
3737
genericsContext,

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/ObjectGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ class ObjectGenerator(
99
private val sourceOfRandomness: SourceOfRandomness,
1010
private val generationStatus: GenerationStatus
1111
): InstanceGenerator {
12-
override fun generate(): UtModel? =
12+
override fun generate(): UtModel =
1313
GreyBoxFuzzerGenerators.generatorRepository
14-
.generators
14+
.getGenerators()
1515
.toList()
1616
.flatMap { it.second }
1717
.filter { !it.hasComponents() }
1818
.randomOrNull()
19-
?.generate(sourceOfRandomness, generationStatus)
19+
?.generate(sourceOfRandomness, generationStatus) ?: TODO("null")
2020
}

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/ReflectionClassGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import org.utbot.quickcheck.internal.ParameterTypeContext
88
class ReflectionClassGenerator(
99
private val parameterTypeContext: ParameterTypeContext
1010
) : InstanceGenerator {
11-
override fun generate(): UtModel? =
11+
override fun generate(): UtModel =
1212
parameterTypeContext.resolved.typeParameters.randomOrNull()?.type?.componentClass?.let {
1313
UtModelGenerator.utModelConstructor.construct(it, Class::class.java.id)
14-
}
14+
} ?: TODO("null")
1515
}

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/StaticsBasedInstanceGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ open class StaticsBasedInstanceGenerator(
1313
private val generationStatus: GenerationStatus,
1414
private val depth: Int
1515
) : InstanceGenerator {
16-
override fun generate(): UtModel? {
16+
override fun generate(): UtModel {
1717
val staticMethodBasedGenerator =
1818
StaticsMethodBasedInstanceGenerator(clazz, gctx, sourceOfRandomness, generationStatus, depth)
1919
val staticFieldBasedGenerator =

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/StaticsFieldBasedInstanceGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ internal class StaticsFieldBasedInstanceGenerator(
2121
private val clazz: Class<*>,
2222
private val gctx: GenericsContext
2323
) : InstanceGenerator {
24-
override fun generate(): UtModel? =
24+
override fun generate(): UtModel =
2525
getRandomStaticToProduceInstanceUsingSoot()?.let { fieldToProvideInstance ->
2626
createUtModelForStaticFieldInvocation(UtModelGenerator.utModelConstructor, fieldToProvideInstance)
27-
}
27+
} ?: TODO("null")
2828

2929
//In case of no Soot
3030
private fun getStaticFieldToProduceInstance(): Field? {

utbot-framework/src/main/kotlin/org/utbot/engine/greyboxfuzzer/generator/userclasses/generator/StaticsMethodBasedInstanceGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ internal class StaticsMethodBasedInstanceGenerator(
2020
private val generationStatus: GenerationStatus,
2121
private val depth: Int
2222
) : InstanceGenerator {
23-
override fun generate(): UtModel? =
23+
override fun generate(): UtModel =
2424
getRandomStaticToProduceInstanceUsingSoot()?.let { methodToProvideInstance ->
2525
val resolvedMethodContext =
2626
try {
@@ -37,7 +37,7 @@ internal class StaticsMethodBasedInstanceGenerator(
3737
generationStatus,
3838
depth
3939
).invoke()
40-
}
40+
} ?: TODO("null")
4141

4242
//In case of no Soot
4343
private fun getRandomStaticToProduceInstance(): Method? =

0 commit comments

Comments
 (0)