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

// @dart = 2.9

/// @assertion final Element offsetParent
/// The element from which all offset calculations are currently computed.
/// @description Checks expected offsetParent

import "dart:html";
import "../../../Utils/expect.dart";
import "../testcommon.dart";

main() {
  document.body.setInnerHtml('''

<div style="position: absolute; left: 10px; top: 10px" id="div1">
  some
  <div id="div2">
    text
  </div>
</div>
<div id="div3">
  some
  <div id="div4">
    text
  </div>
</div>''', treeSanitizer: new NullTreeSanitizer());

  var div1 = document.body.querySelector('#div1');
  var div2 = document.body.querySelector('#div2');
  var div3 = document.body.querySelector('#div3');
  var div4 = document.body.querySelector('#div4');

  var b = document.body;

  Expect.identical(b, div1.offsetParent, 'div1');
  Expect.identical(div1, div2.offsetParent, 'div2');
  Expect.identical(b, div3.offsetParent, 'div3');
  Expect.identical(b, div4.offsetParent, 'div4');
}
