blob: 80181f0d1e4b1cff1edbbd419eb7eeda04921d36 [file] [log] [blame] [edit]
// Copyright (c) 2015, 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/async_helper.dart";
import "package:expect/expect.dart";
import "dart:async";
void main() {
StackTrace stack;
try {
throw 0;
} catch (e, s) {
stack = s;
}
var string = "$stack";
StackTrace stringTrace = new StackTrace.fromString(string);
Expect.isTrue(stringTrace is StackTrace);
Expect.equals(stack.toString(), stringTrace.toString());
string = "some random string, nothing like a StackTrace";
stringTrace = new StackTrace.fromString(string);
Expect.isTrue(stringTrace is StackTrace);
Expect.equals(string, stringTrace.toString());
// Use stacktrace asynchronously.
asyncStart();
var c = new Completer();
c.completeError(0, stringTrace);
c.future
.then<Null>(
(v) {
throw "Unexpected value: $v";
},
onError: (e, s) {
Expect.equals(string, s.toString());
},
)
.then((_) {
var c = new StreamController();
c.stream.listen(
(v) {
throw "Unexpected value: $v";
},
onError: (e, s) {
Expect.equals(string, s.toString());
asyncEnd();
},
);
c.addError(0, stringTrace);
c.close();
});
}