// 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. // @dart = 2.9 import "package:expect/expect.dart"; import "package:async_helper/async_helper.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((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(); }); }