<!DOCTYPE html>
<html>
<head>
<script src="UndoTests.js"></script>
<script>
function performTest()
{
    setupOutlineNumbering();
    var versions = new Array();
    versions.push(DOM_cloneNode(document.body,true));

    Outline_init();
    if (Outline_detectSectionNumbering())
        setupOutlineNumbering();
    PostponedActions_perform();
    versions.push(DOM_cloneNode(document.body,true));

    UndoManager_newGroup();
    Selection_selectAll();
    PostponedActions_perform();
    versions.push(DOM_cloneNode(document.body,true));

    Clipboard_cut();
    PostponedActions_perform();
    versions.push(DOM_cloneNode(document.body,true));

    testUndo(versions,document.body);
}
</script>
</head>
<body>
<nav class="tableofcontents"></nav>
<h1>Test</h1>
<h1>Test</h1>
<h1>Test</h1>
</body>
</html>
