<!DOCTYPE html> <!-- webkit-test-runner [ enableUndoManagerAPI=true ] -->
<html>
    <head>
        <script src="../../resources/js-test.js"></script>
    </head>
    <script>
        function emptyFunction() { }

        function runTest()
        {
            description("Verifies that, when the UndoManager API is enabled, UndoManager and UndoItem interfaces behave as expected.");

            debug("\nTesting UndoManager:");
            shouldBeTrue("UndoManager instanceof Function");
            shouldBeEqualToString("typeof UndoManager", "function");
            shouldBeTrue("document.undoManager instanceof UndoManager");
            shouldBeTrue("Object.getPrototypeOf(document.undoManager) === UndoManager.prototype");
            shouldBeTrue("UndoManager.prototype.addItem instanceof Function");
            shouldThrow("UndoManager()");
            shouldThrow("new UndoManager()");
            shouldThrow("document.undoManager.addItem()");
            shouldThrow("document.undoManager.addItem('foo')");
            shouldBeEqualToString("UndoManager.toString()", "function UndoManager() {\n    [native code]\n}");
            shouldBeEqualToString("document.undoManager.toString()", "[object UndoManager]");

            debug("\nTesting UndoItem:");
            shouldBeTrue("UndoItem instanceof Function");
            shouldBeEqualToString("typeof UndoItem", "function");
            shouldThrow("UndoItem()");
            shouldThrow("new UndoItem()");
            shouldThrow("new UndoItem('foo')");
            shouldThrow("new UndoItem({ })");
            shouldThrow("new UndoItem({ label: null, undo: null })");
            shouldThrow("new UndoItem({ redo: null })");
            shouldThrow("new UndoItem({ label: '', undo: emptyFunction })");
            shouldThrow("new UndoItem({ label: 'hello', redo: emptyFunction })");
            shouldThrow("new UndoItem({ label: 3, undo: null, redo: null })");
            shouldThrow("new UndoItem({ label: '', undo: '', redo: emptyFunction })");
            shouldThrow("new UndoItem({ label: '', undo: emptyFunction, redo: 10 })");
            shouldBeTrue("new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction, foo: 'hi' }) instanceof UndoItem");
            shouldBeTrue("Object.getPrototypeOf(new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction })) === UndoItem.prototype");
            shouldBeEqualToString("new UndoItem({ label: 'foo', undo: emptyFunction, redo: emptyFunction }).label", "foo");
            shouldBeEqualToString("UndoItem.toString()", "function UndoItem() {\n    [native code]\n}");
            shouldBeEqualToString("new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction }).toString()", "[object UndoItem]");
            shouldNotThrow("document.undoManager.addItem(new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction }))");
        }
    </script>
    <body onload=runTest()></body>
</html>
