Skip to content

Commit

Permalink
Adjusted basic assertions.
Browse files Browse the repository at this point in the history
Code somewhat cleaned up.
Added escapes for special characters (\ and $) and a couple of tests for them.
Updated to account for differences between Kotlin and Java.
Added targetFormat to the Gene (to allow the gene to know the format needed).
  • Loading branch information
bogdanmarculescu committed Apr 29, 2019
1 parent 030b6b8 commit 85884e6
Show file tree
Hide file tree
Showing 33 changed files with 94 additions and 76 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ object DbActionTransformer {
if (k is SqlForeignKeyGene) {
isFkReferenceToNonPrintable = handleSqlForeignKey(k, previous, entry)
} else {
entry.printableValue = g.getValueAsPrintableString()
entry.printableValue = g.getValueAsPrintableString(targetFormat = null)
}
} else {
entry.printableValue = g.getValueAsPrintableString()
entry.printableValue = g.getValueAsPrintableString(targetFormat = null)
}

entry.variableName = g.getVariableName()
Expand Down Expand Up @@ -99,7 +99,7 @@ object DbActionTransformer {
if (isFkReferenceToNonPrintable) {
entry.foreignKeyToPreviouslyGeneratedRow = g.uniqueIdOfPrimaryKey
} else {
entry.printableValue = g.getValueAsPrintableString(previous)
entry.printableValue = g.getValueAsPrintableString(previous, targetFormat = null)
}

return isFkReferenceToNonPrintable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ object DbActionUtils {
} else if ((g is SqlPrimaryKeyGene && g.isReferenceToNonPrintable(all))) {
"FK_REFERENCE_ " + (g.gene as SqlForeignKeyGene).uniqueIdOfPrimaryKey
} else {
g.getValueAsPrintableString(all)
g.getValueAsPrintableString(all, targetFormat = null)
}
}

Expand Down
11 changes: 5 additions & 6 deletions core/src/main/kotlin/org/evomaster/core/output/TestCaseWriter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import org.evomaster.core.search.EvaluatedAction
import org.evomaster.core.search.gene.Gene
import org.evomaster.core.search.gene.SqlForeignKeyGene
import org.evomaster.core.search.gene.SqlPrimaryKeyGene
import java.awt.PageAttributes
import javax.ws.rs.core.MediaType


Expand Down Expand Up @@ -176,7 +175,7 @@ class TestCaseWriter {
return getPrintableValue(g.gene)

} else {
return StringEscapeUtils.escapeJava(g.getValueAsPrintableString())
return StringEscapeUtils.escapeJava(g.getValueAsPrintableString(targetFormat = null))
}
}

Expand Down Expand Up @@ -446,9 +445,9 @@ class TestCaseWriter {
if(bodyParam.isJson()) {

val body = if (readable) {
OutputFormatter.JSON_FORMATTER.getFormatted(bodyParam.gene.getValueAsPrintableString(mode = "json"))
OutputFormatter.JSON_FORMATTER.getFormatted(bodyParam.gene.getValueAsPrintableString(mode = "json", targetFormat = null))
} else {
bodyParam.gene.getValueAsPrintableString(mode = "json")
bodyParam.gene.getValueAsPrintableString(mode = "json", targetFormat = null)
}

//needed as JSON uses ""
Expand All @@ -472,7 +471,7 @@ class TestCaseWriter {
val body = bodyParam.gene.getValueAsPrintableString("xml")
lines.add(".body(\"$body\")")
} */ else if(bodyParam.isTextPlain()) {
val body = bodyParam.gene.getValueAsPrintableString(mode = "text")
val body = bodyParam.gene.getValueAsPrintableString(mode = "text", targetFormat = null)
lines.add(".body($body)")
} else {
throw IllegalStateException("Unrecognized type: " + bodyParam.contentType())
Expand All @@ -496,7 +495,7 @@ class TestCaseWriter {
call.parameters.filterIsInstance<HeaderParam>()
.filter { !prechosenAuthHeaders.contains(it.name) }
.forEach {
lines.add(".header(\"${it.name}\", ${it.gene.getValueAsPrintableString()})")
lines.add(".header(\"${it.name}\", ${it.gene.getValueAsPrintableString(targetFormat = null)})")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ class RestFitness : FitnessFunction<RestIndividual>() {
body.isTextPlain() -> "text"
else -> throw IllegalStateException("Cannot handle body type: " + body.contentType())
}
Entity.entity(body.gene.getValueAsPrintableString(mode = mode), body.contentType())
Entity.entity(body.gene.getValueAsPrintableString(mode = mode, targetFormat = null), body.contentType())
} else if (forms != null) {
Entity.entity(forms, MediaType.APPLICATION_FORM_URLENCODED_TYPE)
} else if(a.verb == HttpVerb.PUT || a.verb == HttpVerb.PATCH){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -56,9 +57,9 @@ class ArrayGene<T>(
}
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return "[" +
elements.map { g -> g.getValueAsPrintableString(previousGenes, mode) }.joinToString(", ") +
elements.map { g -> g.getValueAsPrintableString(previousGenes, mode, null) }.joinToString(", ") +
"]";
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness
import java.util.*

Expand All @@ -14,7 +15,7 @@ class Base64StringGene(
data.randomize(randomness, forceNewValue)
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return Base64.getEncoder().encodeToString(data.value.toByteArray())
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand All @@ -21,7 +22,7 @@ class BooleanGene(name: String, var value: Boolean = true) : Gene(name) {
value = k
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return value.toString()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand All @@ -23,7 +24,7 @@ class CycleObjectGene(name: String) : ObjectGene(name, listOf()) {
//nothing to do
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
throw IllegalStateException("CycleObjectGene has no value")
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand Down Expand Up @@ -28,7 +29,7 @@ class DateGene(
day.randomize(randomness, forceNewValue, allGenes)
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return "\"${getValueAsRawString()}\""
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand Down Expand Up @@ -32,7 +33,7 @@ open class DateTimeGene(
time.randomize(randomness, forceNewValue, allGenes)
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return "\"${getValueAsRawString()}\""
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand All @@ -26,8 +27,8 @@ class DisruptiveGene<out T>(name: String, val gene: T, var probability: Double)
gene.randomize(randomness, forceNewValue, allGenes)
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
return gene.getValueAsPrintableString(previousGenes, mode)
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return gene.getValueAsPrintableString(previousGenes, mode, null)
}

override fun getValueAsRawString(): String {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand All @@ -15,7 +16,7 @@ class DoubleGene(name: String,
value = randomness.nextDouble()
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return value.toString()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -39,7 +40,7 @@ class EnumGene<T>(
index = k
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {

val res = values[index]
if(res is String){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand All @@ -15,7 +16,7 @@ class FloatGene(name: String,
value = randomness.nextFloat()
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return value.toString()
}

Expand Down
6 changes: 4 additions & 2 deletions core/src/main/kotlin/org/evomaster/core/search/gene/Gene.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -61,11 +62,12 @@ abstract class Gene(var name: String) {
*/
abstract fun getValueAsPrintableString(
previousGenes: List<Gene> = listOf(),
mode: String? = null
mode: String? = null,
targetFormat: OutputFormat? = null
) : String


open fun getValueAsRawString() = getValueAsPrintableString()
open fun getValueAsRawString() = getValueAsPrintableString(targetFormat = null)

abstract fun copyValueFrom(other: Gene)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand All @@ -26,7 +27,7 @@ class ImmutableDataHolderGene(name: String, val value: String, val inQuotes: Boo
throw IllegalStateException("Not supposed to modify an immutable gene")
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {

if(inQuotes){
return "\"$value\""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -65,7 +66,7 @@ class IntegerGene(

}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return value.toString()
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -30,7 +31,7 @@ class LongGene (
value = k
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?) : String{
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?) : String{
return value.toString()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness


Expand Down Expand Up @@ -58,14 +59,14 @@ class MapGene<T>(
}
}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return "{" +
elements.filter { f ->
f !is CycleObjectGene &&
(f !is OptionalGene || f.isActive)
}.map { f ->
"""
"${f.name}":${f.getValueAsPrintableString()}
"${f.name}":${f.getValueAsPrintableString(targetFormat = null)}
"""
}.joinToString(",") +
"}";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand Down Expand Up @@ -36,7 +37,7 @@ open class ObjectGene(name: String, val fields: List<out Gene>, val refType : St
}


override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?) : String{
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?) : String{

val buffer = StringBuffer()

Expand All @@ -48,7 +49,7 @@ open class ObjectGene(name: String, val fields: List<out Gene>, val refType : St
it !is CycleObjectGene &&
(it !is OptionalGene || it.isActive)
}.map {
"\"${it.name}\":${it.getValueAsPrintableString(previousGenes,mode)}"
"\"${it.name}\":${it.getValueAsPrintableString(previousGenes, mode, null)}"
}.joinTo(buffer, ", ")

buffer.append("}")
Expand All @@ -67,7 +68,7 @@ open class ObjectGene(name: String, val fields: List<out Gene>, val refType : St
(it !is OptionalGene || it.isActive)
}.forEach {
buffer.append(openXml(it.name))
buffer.append(it.getValueAsPrintableString(previousGenes,mode))
buffer.append(it.getValueAsPrintableString(previousGenes, mode, null))
buffer.append(closeXml(it.name))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.evomaster.core.search.gene

import org.evomaster.core.output.OutputFormat
import org.evomaster.core.search.service.Randomness

/**
Expand Down Expand Up @@ -50,8 +51,8 @@ class OptionalGene(name: String,

}

override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?): String {
return gene.getValueAsPrintableString()
override fun getValueAsPrintableString(previousGenes: List<Gene>, mode: String?, targetFormat: OutputFormat?): String {
return gene.getValueAsPrintableString(targetFormat = null)
}

override fun getValueAsRawString(): String {
Expand Down
Loading

0 comments on commit 85884e6

Please sign in to comment.