UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

188 lines (147 loc) 5.02 kB
<!-- All Rights Reserved. Tests for goog.editor.Plugin. @author nicksantos@google.com (Nick Santos) --><html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Editor Unit Tests - goog.editor.Plugin</title> <script src='../base.js'></script> <script src='../deps.js'></script> <script> goog.require('goog.editor.Field'); goog.require('goog.editor.Plugin'); goog.require('goog.functions'); goog.require('goog.userAgent'); goog.require('goog.testing.StrictMock'); goog.require('goog.testing.jsunit'); </script> </head> <body> <script> var plugin; var fieldObject; function setUp() { plugin = new goog.editor.Plugin(); fieldObject = {}; } function tearDown() { plugin.dispose(); } function testRegisterFieldObject() { plugin.registerFieldObject(fieldObject); assertEquals('Register field object must be stored in protected field.', fieldObject, plugin.fieldObject); assertFalse('Newly registered plugin must not be enabled.', plugin.isEnabled(fieldObject)); } function testUnregisterFieldObject() { plugin.registerFieldObject(fieldObject); plugin.enable(fieldObject); plugin.unregisterFieldObject(fieldObject); assertNull('fieldObject property must be undefined after ' + 'unregistering a field object.', plugin.fieldObject); assertFalse('Unregistered field object must not be enabled', plugin.isEnabled(fieldObject)); } function testEnable() { plugin.registerFieldObject(fieldObject); plugin.enable(fieldObject); assertTrue('Enabled field object must be enabled according to isEnabled().', plugin.isEnabled(fieldObject)); } function testDisable() { plugin.registerFieldObject(fieldObject); plugin.enable(fieldObject); plugin.disable(fieldObject); assertFalse('Disabled field object must be disabled according to ' + 'isEnabled().', plugin.isEnabled(fieldObject)); } function testIsEnabled() { // Other base cases covered while testing enable() and disable(). assertFalse('Unregistered field object must be disabled according ' + 'to isEnabled().', plugin.isEnabled(fieldObject)); } function testIsSupportedCommand() { assertFalse('Base plugin class must not support any commands.', plugin.isSupportedCommand('+indent')) } function testExecCommand() { var mockField = new goog.testing.StrictMock(goog.editor.Field); plugin.registerFieldObject(mockField); if (goog.userAgent.GECKO) { mockField.stopChangeEvents(true, true); } mockField.dispatchBeforeChange(); // Note(user): dispatch change turns back on (delayed) change events. mockField.dispatchChange(); mockField.dispatchSelectionChangeEvent(); mockField.$replay(); var passedCommand, passedArg; plugin.execCommandInternal = function(command, arg){ passedCommand = command; passedArg = arg; }; plugin.execCommand('+indent', true); // Verify that execCommand dispatched the expected events. mockField.$verify(); mockField.$reset(); // Verify that execCommandInternal was called with the correct arguments. assertEquals('+indent', passedCommand); assertTrue(passedArg); plugin.isSilentCommand = goog.functions.constant(true); mockField.$replay(); plugin.execCommand('+outdent', false); // Verify that execCommand on a silent plugin dispatched no events. mockField.$verify(); // Verify that execCommandInternal was called with the correct arguments. assertEquals('+outdent', passedCommand); assertFalse(passedArg); } /** * Regression test for http://b/issue?id=1471355 . */ function testExecCommandException() { var mockField = new goog.testing.StrictMock(goog.editor.Field); plugin.registerFieldObject(mockField); plugin.execCommandInternal = function() { throw 1; }; if (goog.userAgent.GECKO) { mockField.stopChangeEvents(true, true); } mockField.dispatchBeforeChange(); // Note(user): dispatch change turns back on (delayed) change events. mockField.dispatchChange(); mockField.dispatchSelectionChangeEvent(); mockField.$replay(); assertThrows('Exception should not be swallowed', function() { plugin.execCommand(); }); // Verifies that cleanup is done despite the exception. mockField.$verify(); } function testDisposed() { plugin.registerFieldObject(fieldObject); plugin.dispose(); assert(plugin.getDisposed()); assertNull('Disposed plugin must not have a field object.', plugin.fieldObject); assertFalse('Disposed plugin must not have an enabled field object.', plugin.isEnabled(fieldObject)); } function testIsAndSetAutoDispose() { assertTrue('Plugin must start auto-disposable', plugin.isAutoDispose()); plugin.setAutoDispose(false); assertFalse(plugin.isAutoDispose()); plugin.setAutoDispose(true); assertTrue(plugin.isAutoDispose()); } </script> </body> </html>