/*
 * 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.
 */
/**
 * @assertion 
 * @description 
 */
import "dart:html";
import "../../testharness.dart";

void main() {
    description('Test that the HTML parser does not allow the nesting depth of elements to exceed 512.');
    
    var depth = 514;
    var markup = "";
    var i;
    for (i = 0; i < depth; ++i)
        markup += "<div id='d$i'>";
    var doc = document.implementation.createHtmlDocument("");
    doc.body.appendHtml(markup, treeSanitizer: new NullTreeSanitizer());
    
    var d510 = doc.getElementById("d510");
    var d511 = doc.getElementById("d511");
    var d512 = doc.getElementById("d512");
    
    shouldBe(d512.parentNode, d510, "d512.parentNode");
    shouldBe(d511.parentNode, d510, "d511.parentNode");
    shouldBe(d512.previousNode, d511, "d512.previousNode");

    checkTestFailures();
}
    