6616ddeb88
* All helpers in /helpers/ * Tests of user-facing behavior in /end_to_end/ * Tests of internal models and unittests of internal classes in /model/ Change-Id: Ic7a7e58aa01f92f8572514ae81230804f36af67e Reviewed-on: https://dart-review.googlesource.com/72644 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Stephen Adams <sra@google.com>
103 lines
2.2 KiB
Dart
103 lines
2.2 KiB
Dart
// 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
import "package:async_helper/async_helper.dart";
|
|
import '../helpers/compiler_helper.dart';
|
|
|
|
// Test for emitting JavaScript pre- and post-increment and assignment ops.
|
|
|
|
const String TEST_1 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a + 1; return r; } // this.a++
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
const String TEST_2 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a + 1; return a; } // ++this.a
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
const String TEST_3 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a - 1; return r; } // this.a--
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
const String TEST_4 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a - 1; return a; } // --this.a
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
const String TEST_5 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a - 2; return a; } // this.a -= 2
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
const String TEST_6 = """
|
|
class A {
|
|
var a = 42;
|
|
int foo() { var r = a; a = a * 2; return a; } // this.a *= 2
|
|
}
|
|
|
|
void main() {
|
|
var a = new A();
|
|
print(a.foo());
|
|
}
|
|
""";
|
|
|
|
main() {
|
|
asyncTest(() async {
|
|
print('--test from kernel------------------------------------------------');
|
|
await runTests();
|
|
});
|
|
}
|
|
|
|
runTests() async {
|
|
test(String code, Function f) async {
|
|
String generated = await compileAll(code, disableInlining: true);
|
|
Expect.isTrue(f(generated));
|
|
}
|
|
|
|
await test(TEST_1, (generated) => generated.contains(r'return this.a++;'));
|
|
await test(TEST_2, (generated) => generated.contains(r'return ++this.a;'));
|
|
await test(TEST_3, (generated) => generated.contains(r'return this.a--;'));
|
|
await test(TEST_4, (generated) => generated.contains(r'return --this.a;'));
|
|
await test(TEST_5, (generated) => generated.contains(r' this.a -= 2;'));
|
|
await test(TEST_6, (generated) => generated.contains(r' this.a *= 2;'));
|
|
}
|