// Copyright (c) 2011, 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

/// @assertion final Zone parent
/// Returns the parent zone.
/// Returns null if this is the ROOT zone.
/// @description Checks that parent property has expected values.
/// @author ilya


import "dart:async";
import "../../../Utils/expect.dart";

var count = 0;
var N = 20;

test(Zone z) {
  z.fork().run(() {
    Expect.equals(z, Zone.current.parent);
    if (++count < N) {
      test(Zone.current);
    }
  });
}

main() {
  Expect.isNull(Zone.root.parent);

  var z = Zone.current;

  runZoned(() {
    Expect.equals(z, Zone.current.parent);
  });

  test(Zone.current);
}
