Files
kotlin-fork/js/js.translator/testData/box/jsCode/operators.kt
T
2019-07-01 18:55:41 +03:00

69 lines
2.3 KiB
Kotlin
Vendored

// EXPECTED_REACHABLE_NODES: 1290
@JsExport
data class A(val value: Int)
fun box(): String {
assertEquals(-1, js("-1"), "- (unary)")
assertEquals(1, js("+'1'"), "+ (unary)")
assertEquals(1, js("2 - 1"), "- (binary)")
assertEquals(3, js("2 + 1"), "+ (binary)")
assertEquals(10, js("2 * 5"), "*")
assertEquals(5, js("10 / 2"), "/")
assertEquals(1, js("11 % 2"), "%")
assertEquals(36, js("9 << 2"), "<<")
assertEquals(2, js("9 >> 2"), ">>")
assertEquals(1073741821, js("-9 >>> 2"), ">>>")
assertEquals(0, js("0 & 1"), "&")
assertEquals(1, js("0 | 1"), "|")
assertEquals(1, js("0 ^ 1"), "^")
assertEquals(-2, js("~1"), "~")
var i = 2
assertEquals(1, js("--i"), "-- prefix")
assertEquals(1, js("i--"), "-- postfix (1)")
assertEquals(0, js("i"), "-- postfix (0)")
assertEquals(1, js("++i"), "++ prefix")
assertEquals(1, js("i++"), "++ postfix (1)")
assertEquals(2, js("i"), "++ postfix (0)")
assertEquals(true , js("true || false"), "||")
assertEquals(false , js("true && false"), "&&")
assertEquals(false , js("!true"), "!")
assertEquals(true , js("1 < 2"), "<")
assertEquals(false, js("1 > 2"), ">")
assertEquals(true, js("1 <= 2"), "<=")
assertEquals(false, js("1 >= 2"), ">=")
assertEquals(false, js("2 === '2'"), "===")
assertEquals(true, js("2 !== '2'"), "!==")
assertEquals(true, js("2 == '2'"), "==")
assertEquals(false, js("2 != '2'"), "!=")
assertEquals("odd", js("(1 % 2 === 0)?'even':'odd'"), "?:")
assertEquals("even", js("(4 % 2 === 0)?'even':'odd'"), "?:")
assertEquals(3, js("1,2,3"), ", (comma)")
var j = 0
assertEquals(1, js("j = 1"), "=")
assertEquals(3, js("j += 2"), "+=")
assertEquals(2, js("j -= 1"), "-=")
assertEquals(14, js("j *= 7"), "*=")
assertEquals(7, js("j /= 2"), "/=")
assertEquals(1, js("j %= 2"), "%=")
assertEquals(undefined, js("(void 0)"), "void")
assertEquals(true, js("'key' in {'key': 10}"), "in")
assertEquals("string", js("typeof 'str'"), "typeof")
assertEquals(A(2), js("new _.A(2)"), "new")
assertEquals(true, js("new String('str') instanceof String"), "instanceof")
var s: Any = js("({key: 10})")
assertEquals(undefined, js("delete s.key, s.key"), "delete")
return "OK"
}