<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="editor-test.js"></script>
<script>

function test()
{
    InspectorTest.runTestSuite([
        function testDamageLastChunk(next)
        {
            var textEditor = InspectorTest.createTestEditor();
            InspectorTest.fillEditorWithText(textEditor, 5);
            textEditor.setText(textEditor.text() + "\n");
            InspectorTest.addResult("\nBefore editing");
            InspectorTest.dumpEditorModel(textEditor);
            InspectorTest.dumpEditorDOM(textEditor);
            var textModel = textEditor._textModel;
            textModel.editRange(new WebInspector.TextRange(5, 0, 5, 0), "additional 5\n");
            InspectorTest.addResult("\nAfter editing");
            InspectorTest.dumpEditorModel(textEditor);
            InspectorTest.dumpEditorDOM(textEditor);
            next();
        },
    ]);
}

</script>
</head>

<body onload="runTest()">
<p>
This test checks how damaged chunks' DOM is removed from the container.
</p>

</body>
</html>
