blob: 877b3714f376f5d65d815b282a1144b04a5ee2f2 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Tests of operators.
library operators_tests;
import 'js_backend_cps_ir.dart';
const List<TestEntry> tests = const [
const TestEntry("main() { return true ? 42 : 'foo'; }"),
const TestEntry("""
var x = 1;
foo() => ++x > 10;
main() {
print(foo() ? "hello world" : "bad bad");
}""","""
function() {
P.print(V.foo() ? "hello world" : "bad bad");
}"""),
const TestEntry("""
var x = 1;
foo() => ++x > 10;
main() {
print(foo() ? "hello world" : "bad bad");
}""","""
function() {
P.print(V.foo() ? "hello world" : "bad bad");
}"""),
const TestEntry("""
var x = 1;
get foo => ++x > 10;
main() {
print(foo ? "hello world" : "bad bad");
}""","""
function() {
P.print(V.foo() ? "hello world" : "bad bad");
}"""),
const TestEntry("""
var x = 1;
get foo => ++x > 10;
main() { print(foo && foo); }
""", """
function() {
P.print(V.foo() ? !!V.foo() : false);
}"""),
const TestEntry("""
var x = 1;
get foo => ++x > 10;
main() { print(foo || foo); }
""","""
function() {
P.print(V.foo() ? true : !!V.foo());
}"""),
const TestEntry("""
get foo => foo;
main() { print(foo || foo); }
""","""
function() {
V.foo();
}"""),
// Needs interceptor calling convention
//const TestEntry("""
//class Foo {
// operator[]=(index, value) {
// print(value);
// }
//}
//main() {
// var foo = new Foo();
// foo[5] = 6;
//}""", r"""
//function() {
// V.Foo$().$indexSet(5, 6);
//}
//"""),
const TestEntry("""
main() {
var list = [1, 2, 3];
list[1] = 6;
print(list);
}""", r"""
function() {
var list = [1, 2, 3], v0 = 1;
if (v0 < 0 || v0 >= list.length)
H.ioore(list, v0);
list[v0] = 6;
P.print(list);
}"""),
];
void main() {
runTests(tests);
}