-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathJsIdUtil.kt
More file actions
68 lines (55 loc) · 2.19 KB
/
JsIdUtil.kt
File metadata and controls
68 lines (55 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package framework.api.js.util
import framework.api.js.JsClassId
import framework.api.js.JsMultipleClassId
import org.utbot.framework.plugin.api.ClassId
import org.utbot.framework.plugin.api.UtModel
import org.utbot.framework.plugin.api.UtNullModel
import org.utbot.framework.plugin.api.UtPrimitiveModel
import org.utbot.framework.plugin.api.util.booleanClassId
import org.utbot.framework.plugin.api.util.doubleClassId
import org.utbot.framework.plugin.api.util.floatClassId
val jsUndefinedClassId = JsClassId("undefined")
val jsNumberClassId = JsClassId("number")
val jsBooleanClassId = JsClassId("bool")
val jsDoubleClassId = JsClassId("double")
val jsStringClassId = JsClassId("string")
val jsErrorClassId = JsClassId("error")
val jsBasic = setOf(
jsBooleanClassId,
jsDoubleClassId,
jsUndefinedClassId,
jsStringClassId,
jsNumberClassId
)
fun ClassId.toJsClassId() =
when {
this == booleanClassId -> jsBooleanClassId
this == doubleClassId -> jsDoubleClassId
this == floatClassId -> jsDoubleClassId
this.name.lowercase().contains("string") -> jsStringClassId
else -> jsUndefinedClassId
}
fun JsClassId.defaultJsValueModel(): UtModel = when (this) {
jsNumberClassId -> UtPrimitiveModel(0.0)
jsDoubleClassId -> UtPrimitiveModel(Double.POSITIVE_INFINITY)
jsBooleanClassId -> UtPrimitiveModel(false)
jsStringClassId -> UtPrimitiveModel("default")
jsUndefinedClassId -> UtPrimitiveModel(0.0)
else -> UtNullModel(this)
}
val JsClassId.isJsBasic: Boolean
get() = this in jsBasic || this.isJsStdStructure
val JsClassId.isExportable: Boolean
get() = !(this.isJsBasic || this == jsErrorClassId || this is JsMultipleClassId)
val JsClassId.isClass: Boolean
get() = !(this.isJsBasic || this == jsErrorClassId || this is JsMultipleClassId)
val JsClassId.isUndefined: Boolean
get() = this == jsUndefinedClassId
val JsClassId.isJsArray: Boolean
get() = this.name == "array" && this.elementClassId is JsClassId
val JsClassId.isJsMap: Boolean
get() = this.name == "Map"
val JsClassId.isJsSet: Boolean
get() = this.name == "Set"
val JsClassId.isJsStdStructure: Boolean
get() = this.isJsArray || this.isJsSet || this.isJsMap