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
HTML
<!--
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>