mirror of
https://github.com/dart-lang/sdk
synced 2024-09-04 16:03:44 +00:00
Update language_2/await_test.dart to use async_helper.
Add more tests. See #31535. Bug: http://dartbug.com/31535 Change-Id: I1db9ecb84d9ed87f1111e3fdc9637143cf46fa33 Reviewed-on: https://dart-review.googlesource.com/26220 Commit-Queue: Lasse R.H. Nielsen <lrn@google.com> Reviewed-by: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
parent
7f91a438f5
commit
8dc7d5e907
|
@ -38,7 +38,10 @@ Exception _buildException(String msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Call this method before an asynchronous test is created.
|
/// Call this method before an asynchronous test is created.
|
||||||
void asyncStart() {
|
///
|
||||||
|
/// If [count] is provided, expect [count] [asyncEnd] calls instead of just one.
|
||||||
|
void asyncStart([int count = 1]) {
|
||||||
|
if (count <= 0) return;
|
||||||
if (_initialized && _asyncLevel == 0) {
|
if (_initialized && _asyncLevel == 0) {
|
||||||
throw _buildException('asyncStart() was called even though we are done '
|
throw _buildException('asyncStart() was called even though we are done '
|
||||||
'with testing.');
|
'with testing.');
|
||||||
|
@ -48,7 +51,7 @@ void asyncStart() {
|
||||||
_initialized = true;
|
_initialized = true;
|
||||||
_port = new ReceivePort();
|
_port = new ReceivePort();
|
||||||
}
|
}
|
||||||
_asyncLevel++;
|
_asyncLevel += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Call this after an asynchronous test has ended successfully.
|
/// Call this after an asynchronous test has ended successfully.
|
||||||
|
|
|
@ -35,7 +35,7 @@ Exception _buildException(String msg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Implementation method called from language_tests.js.
|
/// Implementation method called from language_tests.js.
|
||||||
/// Registers the callback that will be used complete the test.
|
/// Registers the callback that will be used to complete the test.
|
||||||
void asyncTestInitialize(_Action0 callback) {
|
void asyncTestInitialize(_Action0 callback) {
|
||||||
_asyncLevel = 0;
|
_asyncLevel = 0;
|
||||||
_initialized = false;
|
_initialized = false;
|
||||||
|
@ -47,7 +47,10 @@ void asyncTestInitialize(_Action0 callback) {
|
||||||
bool get asyncTestStarted => _initialized;
|
bool get asyncTestStarted => _initialized;
|
||||||
|
|
||||||
/// Call this method before an asynchronous test is created.
|
/// Call this method before an asynchronous test is created.
|
||||||
void asyncStart() {
|
///
|
||||||
|
/// If [count] is provided, expect [count] [asyncEnd] calls instead of just one.
|
||||||
|
void asyncStart([int count = 1]) {
|
||||||
|
if (count <= 0) return;
|
||||||
if (_initialized && _asyncLevel == 0) {
|
if (_initialized && _asyncLevel == 0) {
|
||||||
throw _buildException('asyncStart() was called even though we are done '
|
throw _buildException('asyncStart() was called even though we are done '
|
||||||
'with testing.');
|
'with testing.');
|
||||||
|
@ -61,7 +64,7 @@ void asyncStart() {
|
||||||
print('unittest-suite-wait-for-done');
|
print('unittest-suite-wait-for-done');
|
||||||
_initialized = true;
|
_initialized = true;
|
||||||
}
|
}
|
||||||
_asyncLevel++;
|
_asyncLevel += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Call this after an asynchronous test has ended successfully.
|
/// Call this after an asynchronous test has ended successfully.
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
// VMOptions=---optimization-counter-threshold=10
|
// VMOptions=---optimization-counter-threshold=10
|
||||||
|
|
||||||
import 'package:expect/expect.dart';
|
import 'package:expect/expect.dart';
|
||||||
|
import 'package:async_helper/async_helper.dart';
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
@ -89,9 +90,6 @@ instanceMembers() async {
|
||||||
Expect.equals(e, 5);
|
Expect.equals(e, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
await() => 4;
|
|
||||||
nonAsyncFunction() => await();
|
|
||||||
|
|
||||||
others() async {
|
others() async {
|
||||||
var a = "${globalVariable} ${await dummy()} " + await "someString";
|
var a = "${globalVariable} ${await dummy()} " + await "someString";
|
||||||
Expect.equals(a, "1 1 someString");
|
Expect.equals(a, "1 1 someString");
|
||||||
|
@ -103,7 +101,6 @@ others() async {
|
||||||
Expect.equals(b[cnt], 1);
|
Expect.equals(b[cnt], 1);
|
||||||
var e = b[0] + await dummy();
|
var e = b[0] + await dummy();
|
||||||
Expect.equals(e, 2);
|
Expect.equals(e, 2);
|
||||||
Expect.equals(nonAsyncFunction(), 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
conditionals() async {
|
conditionals() async {
|
||||||
|
@ -120,12 +117,124 @@ conditionals() async {
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
asserts() async {
|
||||||
for (int i = 0; i < 10; i++) {
|
for (final FutureOr<T> Function<T>(T) func in <Function>[id, future]) {
|
||||||
staticMembers();
|
assert(await func(true));
|
||||||
topLevelMembers();
|
assert(id(true), await func("message"));
|
||||||
instanceMembers();
|
assert(await func(true), await (func("message")));
|
||||||
conditionals();
|
bool success = true;
|
||||||
others();
|
try {
|
||||||
|
assert(await func(false), await (func("message")));
|
||||||
|
if (assertStatementsEnabled) Expect.fail("Didn't throw");
|
||||||
|
} on AssertionError catch (e) {
|
||||||
|
Expect.equals("message", e.message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
controlFlow() async {
|
||||||
|
for (final FutureOr<T> Function<T>(T) func in <Function>[id, future]) {
|
||||||
|
// For.
|
||||||
|
var c = 0;
|
||||||
|
for (var i = await (func(0)); await func(i < 5); await func(i++)) {
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
Expect.equals(5, c);
|
||||||
|
// While.
|
||||||
|
c = 0;
|
||||||
|
while (await func(c < 5)) c++;
|
||||||
|
Expect.equals(5, c);
|
||||||
|
// Do-while.
|
||||||
|
c = 0;
|
||||||
|
do {
|
||||||
|
c++;
|
||||||
|
} while (await func(c < 5));
|
||||||
|
Expect.equals(5, c);
|
||||||
|
// If.
|
||||||
|
if (await func(c == 5)) {
|
||||||
|
Expect.equals(5, c);
|
||||||
|
} else {
|
||||||
|
Expect.fail("unreachable");
|
||||||
|
}
|
||||||
|
// Throw.
|
||||||
|
try {
|
||||||
|
throw await func("string");
|
||||||
|
} on String {
|
||||||
|
// OK.
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await (throw "string");
|
||||||
|
} on String {
|
||||||
|
// OK.
|
||||||
|
}
|
||||||
|
// Try/catch/finally
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
throw "string";
|
||||||
|
} catch (e) {
|
||||||
|
Expect.equals("string", e);
|
||||||
|
Expect.equals(0, await func(0));
|
||||||
|
rethrow;
|
||||||
|
} finally {
|
||||||
|
Expect.equals(0, await func(0));
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
Expect.equals(0, await func(0));
|
||||||
|
Expect.equals("string", e);
|
||||||
|
} finally {
|
||||||
|
Expect.equals(0, await func(0));
|
||||||
|
}
|
||||||
|
// Switch
|
||||||
|
switch (await func(2)) {
|
||||||
|
case 2:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Expect.fail("unreachable");
|
||||||
|
}
|
||||||
|
// Return.
|
||||||
|
Expect.equals(
|
||||||
|
42,
|
||||||
|
await () async {
|
||||||
|
return await func(42);
|
||||||
|
}());
|
||||||
|
Expect.equals(
|
||||||
|
42,
|
||||||
|
await () async {
|
||||||
|
return func(42);
|
||||||
|
}());
|
||||||
|
// Yield.
|
||||||
|
Stream<int> testStream1() async* {
|
||||||
|
yield await func(42);
|
||||||
|
}
|
||||||
|
|
||||||
|
Expect.listEquals([42], await testStream1().toList());
|
||||||
|
// Yield*
|
||||||
|
Stream<int> testStream2() async* {
|
||||||
|
yield* await func(intStream());
|
||||||
|
}
|
||||||
|
|
||||||
|
Expect.listEquals([42], await testStream2().toList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FutureOr<T> future<T>(T value) async => value;
|
||||||
|
FutureOr<T> id<T>(T value) => value;
|
||||||
|
|
||||||
|
Stream<int> intStream() async* {
|
||||||
|
yield 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
asyncStart();
|
||||||
|
for (int i = 0; i < 11; i++) {
|
||||||
|
asyncTest(staticMembers);
|
||||||
|
asyncTest(topLevelMembers);
|
||||||
|
asyncTest(instanceMembers);
|
||||||
|
asyncTest(conditionals);
|
||||||
|
asyncTest(others);
|
||||||
|
asyncTest(asserts);
|
||||||
|
asyncTest(controlFlow);
|
||||||
|
}
|
||||||
|
asyncEnd();
|
||||||
|
}
|
||||||
|
|
|
@ -467,6 +467,7 @@ generic_no_such_method_dispatcher_simple_test: Skip # This test is just for kern
|
||||||
fuzzy_arrows_test/01: MissingCompileTimeError
|
fuzzy_arrows_test/01: MissingCompileTimeError
|
||||||
built_in_identifier_type_annotation_test/22: MissingCompileTimeError # Issue 28813
|
built_in_identifier_type_annotation_test/22: MissingCompileTimeError # Issue 28813
|
||||||
built_in_identifier_type_annotation_test/85: Crash # Issue 28813
|
built_in_identifier_type_annotation_test/85: Crash # Issue 28813
|
||||||
|
await_test: Crash # Issue 31540
|
||||||
|
|
||||||
[ $compiler == dart2analyzer && !$strong ]
|
[ $compiler == dart2analyzer && !$strong ]
|
||||||
combiner_type_lookup_indexed_test: StaticWarning # Issue #31484
|
combiner_type_lookup_indexed_test: StaticWarning # Issue #31484
|
||||||
|
|
|
@ -121,6 +121,7 @@ assertion_initializer_const_error2_test/cc11: Pass # Issue #31319
|
||||||
assertion_initializer_const_error2_test/none: Pass
|
assertion_initializer_const_error2_test/none: Pass
|
||||||
assertion_initializer_const_function_test/01: Crash
|
assertion_initializer_const_function_test/01: Crash
|
||||||
assertion_initializer_test: CompileTimeError
|
assertion_initializer_test: CompileTimeError
|
||||||
|
await_test: Crash # Issue 31540
|
||||||
black_listed_test/none: fail # Issue 14228
|
black_listed_test/none: fail # Issue 14228
|
||||||
built_in_identifier_prefix_test: CompileTimeError
|
built_in_identifier_prefix_test: CompileTimeError
|
||||||
built_in_identifier_type_annotation_test/22: MissingCompileTimeError # Issue 28816
|
built_in_identifier_type_annotation_test/22: MissingCompileTimeError # Issue 28816
|
||||||
|
@ -256,6 +257,7 @@ async_or_generator_return_type_stacktrace_test/02: MissingCompileTimeError
|
||||||
async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
|
async_or_generator_return_type_stacktrace_test/03: MissingCompileTimeError
|
||||||
async_return_types_test/tooManyTypeParameters: MissingCompileTimeError
|
async_return_types_test/tooManyTypeParameters: MissingCompileTimeError
|
||||||
async_return_types_test/wrongReturnType: Crash # Maltyped input from Fasta, issue 31414
|
async_return_types_test/wrongReturnType: Crash # Maltyped input from Fasta, issue 31414
|
||||||
|
await_test: CompileTimeError # Issue 31541
|
||||||
bad_named_parameters2_test/01: MissingCompileTimeError
|
bad_named_parameters2_test/01: MissingCompileTimeError
|
||||||
bad_named_parameters_test/01: MissingCompileTimeError
|
bad_named_parameters_test/01: MissingCompileTimeError
|
||||||
bad_named_parameters_test/02: MissingCompileTimeError
|
bad_named_parameters_test/02: MissingCompileTimeError
|
||||||
|
|
|
@ -66,6 +66,7 @@ async_star_test/03: CompileTimeError # Issue 31402 (Invocation arguments)
|
||||||
async_star_test/04: CompileTimeError # Issue 31402 (Invocation arguments)
|
async_star_test/04: CompileTimeError # Issue 31402 (Invocation arguments)
|
||||||
async_star_test/05: CompileTimeError # Issue 31402 (Invocation arguments)
|
async_star_test/05: CompileTimeError # Issue 31402 (Invocation arguments)
|
||||||
async_star_test/none: CompileTimeError # Issue 31402 (Invocation arguments)
|
async_star_test/none: CompileTimeError # Issue 31402 (Invocation arguments)
|
||||||
|
await_test: CompileTimeError # Issue 31541
|
||||||
bad_named_parameters2_test/01: MissingCompileTimeError
|
bad_named_parameters2_test/01: MissingCompileTimeError
|
||||||
bad_named_parameters_test/01: MissingCompileTimeError
|
bad_named_parameters_test/01: MissingCompileTimeError
|
||||||
bad_named_parameters_test/02: MissingCompileTimeError
|
bad_named_parameters_test/02: MissingCompileTimeError
|
||||||
|
|
Loading…
Reference in a new issue