Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.editor.PluginTest');
|
||||
goog.setTestOnly('goog.editor.PluginTest');
|
||||
|
||||
goog.require('goog.editor.Field');
|
||||
goog.require('goog.editor.Plugin');
|
||||
goog.require('goog.functions');
|
||||
goog.require('goog.testing.StrictMock');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.userAgent');
|
||||
|
||||
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());
|
||||
}
|
||||
Reference in New Issue
Block a user