Skip to content

Commit 20b7cdf

Browse files
committed
starting with evolve()
1 parent b426319 commit 20b7cdf

5 files changed

Lines changed: 26 additions & 11 deletions

File tree

core/src/main/kotlin/org/evomaster/core/search/gene/collection/TaintedArrayGene.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,11 @@ class TaintedArrayGene(
163163
override fun forceNewTaintId() {
164164
taintedValue = TaintInputName.getTaintName(StaticCounter.getAndIncrease())
165165
}
166+
167+
override fun evolve() {
168+
if(!hasDormantGenes()){
169+
return
170+
}
171+
activate()
172+
}
166173
}

core/src/main/kotlin/org/evomaster/core/search/gene/collection/TaintedMapGene.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,7 @@ class TaintedMapGene(
7373
}
7474
}
7575

76-
fun evolve(){
77-
learnedKeys.forEach { addNewKey(it) }
78-
learnedKeys.clear()
79-
learnedTypes.entries.forEach { specifyValueTypeForKey(it.key, it.value) }
80-
learnedTypes.clear()
81-
}
76+
8277

8378
fun registerKey(key: String){
8479
learnedKeys.add(key)
@@ -256,5 +251,14 @@ class TaintedMapGene(
256251
idGene.second.getWrappedGene(StringGene::class.java)?.value = taintId
257252
}
258253

254+
override fun evolve(){
255+
if(!hasDormantGenes()){
256+
return
257+
}
258+
learnedKeys.forEach { addNewKey(it) }
259+
learnedKeys.clear()
260+
learnedTypes.entries.forEach { specifyValueTypeForKey(it.key, it.value) }
261+
learnedTypes.clear()
262+
}
259263

260264
}

core/src/main/kotlin/org/evomaster/core/search/gene/interfaces/TaintableGene.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ interface TaintableGene {
1818
* Make sure the taint id for this gene, if any is in place, is replaced with a new unique one.
1919
* This is needed for example when copying and pasting actions, to avoid having same id repeated
2020
* more than once.
21-
*
22-
* //TODO once properly implemented, should have check unique id as invariant in Individual
2321
*/
2422
fun forceNewTaintId()
2523

26-
//TODO evolve()
24+
/**
25+
* If the individual has any dormant gene, do evolve, ie., resolve the taint
26+
*/
27+
fun evolve()
2728
}

core/src/main/kotlin/org/evomaster/core/search/gene/string/StringGene.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,10 @@ class StringGene(
10711071
}
10721072
}
10731073

1074+
override fun evolve() {
1075+
//TODO need refactoring
1076+
}
1077+
10741078
/**
10751079
* if its parent is ArrayGene, it cannot have the same taint input value with any other elements in this ArrayGene
10761080
*/

core/src/main/kotlin/org/evomaster/core/taint/TaintAnalysis.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ object TaintAnalysis {
6969

7070
if(evolveArrays) {
7171
allGenes.filterIsInstance<TaintedArrayGene>()
72-
.filter { !it.isActive && it.isResolved() }
73-
.forEach { it.activate() }
72+
.forEach { it.evolve() }
7473
}
7574

7675
if(evolveMaps) {

0 commit comments

Comments
 (0)