Verifies that, when the UndoManager API is enabled, UndoManager and UndoItem interfaces behave as expected. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". Testing UndoManager: PASS UndoManager instanceof Function is true PASS typeof UndoManager is "function" PASS document.undoManager instanceof UndoManager is true PASS Object.getPrototypeOf(document.undoManager) === UndoManager.prototype is true PASS UndoManager.prototype.addItem instanceof Function is true PASS UndoManager() threw exception TypeError: Illegal constructor. PASS new UndoManager() threw exception TypeError: Illegal constructor. PASS document.undoManager.addItem() threw exception TypeError: Not enough arguments. PASS document.undoManager.addItem('foo') threw exception TypeError: Argument 1 ('item') to UndoManager.addItem must be an instance of UndoItem. PASS UndoManager.toString() is "function UndoManager() {\n [native code]\n}" PASS document.undoManager.toString() is "[object UndoManager]" Testing UndoItem: PASS UndoItem instanceof Function is true PASS typeof UndoItem is "function" PASS UndoItem() threw exception TypeError: Constructor requires 'new' operator. PASS new UndoItem() threw exception TypeError: Not enough arguments. PASS new UndoItem('foo') threw exception TypeError: Type error. PASS new UndoItem({ }) threw exception TypeError: Member UndoItemInit.label is required and must be an instance of DOMString. PASS new UndoItem({ label: null, undo: null }) threw exception TypeError: Member UndoItemInit.redo is required and must be an instance of VoidCallback. PASS new UndoItem({ redo: null }) threw exception TypeError: Member UndoItemInit.label is required and must be an instance of DOMString. PASS new UndoItem({ label: '', undo: emptyFunction }) threw exception TypeError: Member UndoItemInit.redo is required and must be an instance of VoidCallback. PASS new UndoItem({ label: 'hello', redo: emptyFunction }) threw exception TypeError: Member UndoItemInit.undo is required and must be an instance of VoidCallback. PASS new UndoItem({ label: 3, undo: null, redo: null }) threw exception TypeError: Type error. PASS new UndoItem({ label: '', undo: '', redo: emptyFunction }) threw exception TypeError: Type error. PASS new UndoItem({ label: '', undo: emptyFunction, redo: 10 }) threw exception TypeError: Type error. PASS new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction, foo: 'hi' }) instanceof UndoItem is true PASS Object.getPrototypeOf(new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction })) === UndoItem.prototype is true PASS new UndoItem({ label: 'foo', undo: emptyFunction, redo: emptyFunction }).label is "foo" PASS UndoItem.toString() is "function UndoItem() {\n [native code]\n}" PASS new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction }).toString() is "[object UndoItem]" PASS document.undoManager.addItem(new UndoItem({ label: '', undo: emptyFunction, redo: emptyFunction })) did not throw exception. PASS successfullyParsed is true TEST COMPLETE