<script>
function $(id) { return document.getElementById(id); }

function testIt()
{
    description('Replace in pargraph by paragraph');

    var selection = window.getSelection();
    var range = document.createRange();
    range.selectNodeContents($('destination'));
    selection.addRange(range);
    document.execCommand('insertHTML', false, '<p>source</p>');
    shouldBeEqualToString('$("destination").textContent', 'source');

    if (window.testRunner)
        $('content').outerHTML = '';
}
</script>
</head>
<body>
<div id="content">
<p id="description"></p>
<p contenteditable="true" id="destination">destination</p>
</div>
<div id="console"></div>
<script src="../../resources/js-test.js"></script>
<script>
testIt();
</script>
</body>
