Files
sdk/tests/language/async/async_test.dart
T
Lasse R.H. Nielsen f8086c81ae Collect all test-related files in package:expect.
Collects files from `package:async_helper` and `tests/language`
that are generally useful, so that all test-related helpers are
in `package:expect`.

Moves the two libraries from `package:async_helper` into `package:expect`,
and the `tests/language/static_type_helper.dart` file too.

Deprecates `async_minitest.dart`, to follow `minitest.dart`,
expecting the Flutter use of it to have been fixed to not break
on deprecation (I believe Flutter no longer breaks builds on deprecations at all).

Patch 1 is the actual change.
Patch 2+4+8 is changing all existing references to the files.
Patch 6 ignores deprecation in files still using `async_minitest.dart`.

3+5+7+9 are updating this text to make the numbers match.
Then it's just test-expectations and small tweaks from there.

Change-Id: I1b665135b5fef9b9a0c3b340ffe9daf874d0174c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/373120
Reviewed-by: Nate Bosch <nbosch@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2024-10-11 16:53:52 +00:00

145 lines
3.0 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.
// VMOptions=
// VMOptions=--stress_write_barrier_elimination
import 'package:expect/async_helper.dart';
import 'package:expect/expect.dart';
import 'dart:async';
topLevelFunction() async {}
Future<int> topLevelWithParameter(int a) async {
return 7 + a;
}
topLevelWithParameterWrongType(int a) async {
return 7 + a;
}
var what = 'async getter';
Future<String> get topLevelGetter async {
return 'I want to be an ${what}';
}
class A {
static int staticVar = 1;
static staticMethod(int param) async => staticVar + param;
static get staticGetter async => staticVar + 3;
int _x;
A(this._x);
operator +(A other) async {
return new A(_x + other._x);
}
get value => _x;
}
class B {
final _y;
const B._internal(this._y);
B() : _y = null;
}
main() {
Future<Object?> asyncReturn;
asyncReturn = topLevelFunction();
asyncStart();
asyncReturn.then((Object? result) {
Expect.isNull(result);
asyncEnd();
});
asyncReturn = topLevelWithParameter(4);
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 11);
asyncEnd();
});
asyncReturn = topLevelGetter;
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 'I want to be an async getter');
asyncEnd();
});
asyncReturn = A.staticMethod(2);
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 3);
asyncEnd();
});
asyncReturn = A.staticGetter;
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 4);
asyncEnd();
});
A a = new A(13);
var b = new A(9);
asyncReturn = a + b;
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals((result as A).value, 22);
asyncEnd();
});
var foo = 17;
bar(int p1, p2) async {
var z = 8;
return p2 + z + foo;
}
asyncReturn = bar(1, 2);
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 27);
asyncEnd();
});
var moreNesting = (int shadowP1, String p2, num p3) {
var z = 3;
aa(int shadowP1) async {
return foo + z + p3 + shadowP1;
}
return aa(6);
};
asyncReturn = moreNesting(1, "ignore", 2);
Expect.isTrue(asyncReturn is Future);
asyncStart();
asyncReturn.then((Object? result) {
Expect.equals(result, 28);
asyncEnd();
});
var checkAsync = (var someFunc) {
var toTest = someFunc();
Expect.isTrue(toTest is Future);
asyncStart();
toTest.then((int result) {
Expect.equals(result, 4);
asyncEnd();
});
};
checkAsync(() async => 4);
}