// 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.

/// @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);
}
