diff --git a/utbot-js/src/main/kotlin/codegen/JsCodeGenerator.kt b/utbot-js/src/main/kotlin/codegen/JsCodeGenerator.kt index ec9491e63e..1087b56e29 100644 --- a/utbot-js/src/main/kotlin/codegen/JsCodeGenerator.kt +++ b/utbot-js/src/main/kotlin/codegen/JsCodeGenerator.kt @@ -1,11 +1,8 @@ package codegen +import framework.api.js.JsClassId import framework.codegen.JsCgLanguageAssistant import framework.codegen.Mocha -import org.utbot.framework.plugin.api.CodegenLanguage -import org.utbot.framework.plugin.api.ExecutableId -import org.utbot.framework.plugin.api.MockFramework -import framework.api.js.JsClassId import org.utbot.framework.codegen.CodeGeneratorResult import org.utbot.framework.codegen.domain.ForceStaticMocking import org.utbot.framework.codegen.domain.HangingTestsTimeout @@ -17,9 +14,12 @@ import org.utbot.framework.codegen.domain.TestFramework import org.utbot.framework.codegen.domain.context.CgContext import org.utbot.framework.codegen.domain.models.CgClassFile import org.utbot.framework.codegen.domain.models.CgMethodTestSet -import org.utbot.framework.codegen.domain.models.TestClassModel +import org.utbot.framework.codegen.domain.models.SimpleTestClassModel import org.utbot.framework.codegen.renderer.CgAbstractRenderer import org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor +import org.utbot.framework.plugin.api.CodegenLanguage +import org.utbot.framework.plugin.api.ExecutableId +import org.utbot.framework.plugin.api.MockFramework import settings.JsTestGenerationSettings.fileUnderTestAliases class JsCodeGenerator( @@ -60,7 +60,7 @@ class JsCodeGenerator( cgTestSets: List, testClassCustomName: String? = null, ): CodeGeneratorResult = withCustomContext(testClassCustomName) { - val testClassModel = TestClassModel(classUnderTest, cgTestSets) + val testClassModel = SimpleTestClassModel(classUnderTest, cgTestSets) val astConstructor = CgSimpleTestClassConstructor(context) val testClassFile = astConstructor.construct(testClassModel) CodeGeneratorResult(renderClassFile(testClassFile), astConstructor.testsGenerationReport) @@ -84,4 +84,4 @@ class JsCodeGenerator( file.accept(renderer) return renderer.toString() } -} \ No newline at end of file +} diff --git a/utbot-js/src/main/kotlin/framework/codegen/model/constructor/tree/JsCgVariableConstructor.kt b/utbot-js/src/main/kotlin/framework/codegen/model/constructor/tree/JsCgVariableConstructor.kt index e45029b9ef..098babf9e0 100644 --- a/utbot-js/src/main/kotlin/framework/codegen/model/constructor/tree/JsCgVariableConstructor.kt +++ b/utbot-js/src/main/kotlin/framework/codegen/model/constructor/tree/JsCgVariableConstructor.kt @@ -1,31 +1,20 @@ package framework.codegen.model.constructor.tree -import org.utbot.framework.plugin.api.UtArrayModel -import org.utbot.framework.plugin.api.UtAssembleModel -import org.utbot.framework.plugin.api.UtCompositeModel -import org.utbot.framework.plugin.api.UtModel -import org.utbot.framework.plugin.api.UtReferenceModel import framework.api.js.JsPrimitiveModel import org.utbot.framework.codegen.domain.context.CgContext import org.utbot.framework.codegen.domain.models.CgLiteral import org.utbot.framework.codegen.domain.models.CgValue -import org.utbot.framework.codegen.tree.CgComponents import org.utbot.framework.codegen.tree.CgVariableConstructor import org.utbot.framework.codegen.util.nullLiteral +import org.utbot.framework.plugin.api.UtModel +import org.utbot.framework.plugin.api.UtReferenceModel class JsCgVariableConstructor(ctx: CgContext) : CgVariableConstructor(ctx) { - - private val nameGenerator = CgComponents.getNameGeneratorBy(ctx) - + override fun getOrCreateVariable(model: UtModel, name: String?): CgValue { - val baseName = name ?: nameGenerator.nameFrom(model.classId) return if (model is UtReferenceModel) valueByModelId.getOrPut(model.id) { - when (model) { - is UtCompositeModel -> TODO() - is UtAssembleModel -> constructAssemble(model, baseName) - is UtArrayModel -> TODO() - else -> TODO() - } + // TODO SEVERE: May lead to unexpected behavior in case of changes to the original method + super.getOrCreateVariable(model, name) } else valueByModel.getOrPut(model) { when (model) { is JsPrimitiveModel -> CgLiteral(model.classId, model.value) @@ -33,4 +22,4 @@ class JsCgVariableConstructor(ctx: CgContext) : CgVariableConstructor(ctx) { } } } -} \ No newline at end of file +} diff --git a/utbot-js/src/main/kotlin/service/BasicCoverageService.kt b/utbot-js/src/main/kotlin/service/BasicCoverageService.kt index 2d2c36148a..a5c5f9482a 100644 --- a/utbot-js/src/main/kotlin/service/BasicCoverageService.kt +++ b/utbot-js/src/main/kotlin/service/BasicCoverageService.kt @@ -31,7 +31,7 @@ class BasicCoverageService( val json = JSONObject(rawResult) coverageList.add(index to json.getJSONObject("s")) val resultData = ResultData( - rawString = json.get("result").toString(), + rawString = if (json.has("result")) json.get("result").toString() else "undefined", type = json.get("type").toString(), index = index, isNan = json.getBoolean("is_nan"), diff --git a/utbot-js/src/main/kotlin/service/FastCoverageService.kt b/utbot-js/src/main/kotlin/service/FastCoverageService.kt index 02a0908f59..c6f762bd25 100644 --- a/utbot-js/src/main/kotlin/service/FastCoverageService.kt +++ b/utbot-js/src/main/kotlin/service/FastCoverageService.kt @@ -18,33 +18,33 @@ class FastCoverageService( ) : CoverageService(context, scriptTexts, baseCoverage) { override fun generateCoverageReport() { - val (_, errorText) = JsCmdExec.runCommand( - cmd = arrayOf("\"${settings.pathToNode}\"", "\"$utbotDirPath/$tempFileName" + "0.js\""), - dir = projectPath, - shouldWait = true, - timeout = settings.timeout, + val (_, errorText) = JsCmdExec.runCommand( + cmd = arrayOf("\"${settings.pathToNode}\"", "\"$utbotDirPath/$tempFileName" + "0.js\""), + dir = projectPath, + shouldWait = true, + timeout = settings.timeout, + ) + for (i in 0..minOf(fuzzingThreshold - 1, testCaseIndices.last)) { + val resFile = File("$utbotDirPath/$tempFileName$i.json") + val rawResult = resFile.readText() + resFile.delete() + val json = JSONObject(rawResult) + val index = json.getInt("index") + if (index != i) logger.error { "Index $index != i $i" } + coverageList.add(index to json.getJSONObject("s")) + val resultData = ResultData( + rawString = if (json.has("result")) json.get("result").toString() else "undefined", + type = json.get("type").toString(), + index = index, + isNan = json.getBoolean("is_nan"), + isInf = json.getBoolean("is_inf"), + isError = json.getBoolean("is_error"), + specSign = json.getInt("spec_sign").toByte() ) - for (i in 0..minOf(fuzzingThreshold - 1, testCaseIndices.last)) { - val resFile = File("$utbotDirPath/$tempFileName$i.json") - val rawResult = resFile.readText() - resFile.delete() - val json = JSONObject(rawResult) - val index = json.getInt("index") - if (index != i) logger.error { "Index $index != i $i" } - coverageList.add(index to json.getJSONObject("s")) - val resultData = ResultData( - rawString = json.get("result").toString(), - type = json.get("type").toString(), - index = index, - isNan = json.getBoolean("is_nan"), - isInf = json.getBoolean("is_inf"), - isError = json.getBoolean("is_error"), - specSign = json.getInt("spec_sign").toByte() - ) - _resultList.add(resultData) - } - if (errorText.isNotEmpty()) { - logger.error { errorText } - } + _resultList.add(resultData) + } + if (errorText.isNotEmpty()) { + logger.error { errorText } + } } }