+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
- <title>CKEDITOR.event</title>\r
- <link rel="stylesheet" type="text/css" href="../test.css" />\r
- <script type="text/javascript" src="../../ckeditor.js"></script>\r
- <script type="text/javascript" src="../test.js"></script>\r
- <script type="text/javascript">\r
- //<![CDATA[\r
-\r
-CKEDITOR.test.addTestCase( (function()\r
-{\r
- // Local reference to the "assert" object.\r
- var assert = CKEDITOR.test.assert;\r
-\r
- return {\r
- test_inherit : function()\r
- {\r
- // Create a testClass that inherits from CKEDITOR.event.\r
- var testClass = function()\r
- {\r
- CKEDITOR.event.call( this );\r
- };\r
- testClass.prototype = CKEDITOR.event.prototype;\r
-\r
- var calls = [];\r
-\r
- var testInstance = new testClass();\r
-\r
- testInstance.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testInstance, this, 'Scope 1 is not valid' );\r
-\r
- assert.areSame( 'someEvent', ev.name, 'ev.name (1) is wrong' );\r
- assert.areSame( testInstance, ev.sender, 'ev.sender (1) is wrong' );\r
- assert.isUndefined( ev.editor, 'ev.editor (1) is wrong' );\r
- assert.isUndefined( ev.data, 'ev.data (1) is wrong' );\r
- assert.isUndefined( ev.listenerData, 'ev.listenerData (1) is wrong' );\r
-\r
- calls.push( 'a' );\r
- } );\r
-\r
- testInstance.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testInstance, this, 'Scope 2 is not valid' );\r
-\r
- assert.areSame( 'someEvent', ev.name, 'ev.name (2) is wrong' );\r
- assert.areSame( testInstance, ev.sender, 'ev.sender (2) is wrong' );\r
- assert.isUndefined( ev.editor, 'ev.editor (2) is wrong' );\r
- assert.isUndefined( ev.data, 'ev.data (2) is wrong' );\r
- assert.isUndefined( ev.listenerData, 'ev.listenerData (2) is wrong' );\r
-\r
- calls.push( 'b' );\r
- } );\r
-\r
- assert.areSame( false, testInstance.fire( 'someEvent' ) );\r
-\r
- assert.areSame( 2, calls.length, 'number of calls doesn\'t match' );\r
- assert.areSame( 'a,b', calls.toString() );\r
- },\r
-\r
- test_implementOn : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = { someprop : 'Test' };\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- assert.areSame( 'Test', testObject.someprop );\r
-\r
- var calls = [];\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testObject, this, 'Scope 1 is not valid' );\r
-\r
- assert.areSame( 'someEvent', ev.name, 'ev.name (1) is wrong' );\r
- assert.areSame( testObject, ev.sender, 'ev.sender (1) is wrong' );\r
- assert.isUndefined( ev.editor, 'ev.editor (1) is wrong' );\r
- assert.isUndefined( ev.data, 'ev.data (1) is wrong' );\r
- assert.isUndefined( ev.listenerData, 'ev.listenerData (1) is wrong' );\r
-\r
- calls.push( 'a' );\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testObject, this, 'Scope 2 is not valid' );\r
-\r
- assert.areSame( 'someEvent', ev.name, 'ev.name (2) is wrong' );\r
- assert.areSame( testObject, ev.sender, 'ev.sender (2) is wrong' );\r
- assert.isUndefined( ev.editor, 'ev.editor (2) is wrong' );\r
- assert.isUndefined( ev.data, 'ev.data (2) is wrong' );\r
- assert.isUndefined( ev.listenerData, 'ev.listenerData (2) is wrong' );\r
-\r
- calls.push( 'b' );\r
- } );\r
-\r
- assert.areSame( false, testObject.fire( 'someEvent' ) );\r
-\r
- assert.areSame( 2, calls.length, 'number of calls doesn\'t match' );\r
- assert.areSame( 'a,b', calls.toString() );\r
- },\r
-\r
- test_eventNameCase : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- // Event Names are case sensitive.\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'someEvent', ev.name, 'ev.name (someEvent) is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'SomeEvent', function( ev )\r
- {\r
- assert.areSame( 'SomeEvent', ev.name, 'ev.name (SomeEvent) is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.fire( 'someEvent' );\r
- assert.areSame( 1, counter, '"someEvent" calls doesn\'t match' );\r
-\r
- counter = 0;\r
-\r
- testObject.fire( 'SomeEvent' );\r
- assert.areSame( 1, counter, '"SomeEvent" calls doesn\'t match' );\r
- },\r
-\r
- test_scope : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- // Counter used just to check that the calls are effectively done.\r
- var counter = 0;\r
-\r
- var testScope = {};\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testObject, this, 'scope (testObject) is wrong' );\r
- assert.areSame( testObject, ev.sender, 'sender (testObject) is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( testScope, this, 'scope (testScope) is wrong' );\r
- assert.areSame( testObject, ev.sender, 'sender (testScope) is wrong' );\r
- counter++;\r
- }, testScope );\r
-\r
- testObject.fire( 'someEvent' );\r
-\r
- assert.areSame( 2, counter, 'wrong number of calls' );\r
- },\r
-\r
- test_listenerData : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- // Counter used just to check that the calls are effectively done.\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test1', ev.listenerData, 'listenerData (1) is wrong' );\r
- counter++;\r
- }, null, 'Test1' );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test2', ev.listenerData, 'listenerData (2) is wrong' );\r
- counter++;\r
- }, null, 'Test2' );\r
-\r
- testObject.fire( 'someEvent' );\r
-\r
- assert.areSame( 2, counter, 'wrong number of calls' );\r
- },\r
-\r
- test_data : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- // Counter used just to check that the calls are effectively done.\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test data', ev.data, 'data (1) is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test data', ev.data, 'data (2) is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.fire( 'someEvent', 'Test data' );\r
-\r
- assert.areSame( 2, counter, 'wrong number of calls' );\r
- },\r
-\r
- test_editor : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- // Counter used just to check that the calls are effectively done.\r
- var counter = 0;\r
-\r
- var editor = {};\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( editor, ev.editor, 'editor is wrong' );\r
- counter++;\r
- } );\r
-\r
- testObject.fire( 'someEvent', null, editor );\r
-\r
- assert.areSame( 1, counter, 'wrong number of calls' );\r
- },\r
-\r
- test_stop : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- ev.stop();\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- counter++;\r
- } );\r
-\r
- assert.areSame( false, testObject.fire( 'someEvent' ), 'fire must return "false"' );\r
- assert.areSame( 1, counter, 'number of calls doesn\'t match' );\r
- },\r
-\r
- test_cancel : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- ev.cancel();\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- counter++;\r
- } );\r
-\r
- assert.areSame( true, testObject.fire( 'someEvent' ), 'fire must return "true"' );\r
- assert.areSame( 1, counter, 'number of calls doesn\'t match' );\r
- },\r
-\r
- test_dataManipulation : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test1', ev.data );\r
- ev.data = 'Test2';\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test2', ev.data );\r
- ev.data = 'Test3';\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- assert.areSame( 'Test3', ev.data );\r
- ev.data = 'Test4';\r
- counter++;\r
- } );\r
-\r
- assert.areSame( 'Test4', testObject.fire( 'someEvent', 'Test1' ), 'fire must return "Test4"' );\r
- assert.areSame( 3, counter, 'number of calls doesn\'t match' );\r
- },\r
-\r
- test_priority : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var calls = [];\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'e' );\r
- }, null, null, 11 );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'c' );\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'a' );\r
- }, null, null, 9 );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'f' );\r
- }, null, null, 11 );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'd' );\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'b' );\r
- }, null, null, 9 );\r
-\r
- testObject.fire( 'someEvent', 'Test data' );\r
- assert.areSame( 'a,b,c,d,e,f', calls.toString() );\r
- },\r
-\r
- test_removeListener : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var calls = [];\r
-\r
- var listener = function( ev )\r
- {\r
- calls.push( 'a' );\r
- };\r
-\r
- testObject.on( 'someEvent', listener );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- calls.push( 'b' );\r
- } );\r
-\r
- testObject.fire( 'someEvent', 'Test data' );\r
- assert.areSame( 'a,b', calls.toString() );\r
-\r
- testObject.removeListener( 'someEvent', listener );\r
-\r
- calls = [];\r
-\r
- testObject.fire( 'someEvent', 'Test data' );\r
- assert.areSame( 'b', calls.toString() );\r
- },\r
-\r
- test_fireOnce : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- counter++;\r
- } );\r
-\r
- testObject.on( 'someEvent', function( ev )\r
- {\r
- counter++;\r
- } );\r
-\r
- assert.areSame( false, testObject.fireOnce( 'someEvent' ), 'fireOnce must return "false"' );\r
- assert.areSame( 2, counter, 'number of calls doesn\'t match' );\r
-\r
- counter = 0;\r
-\r
- assert.areSame( false, testObject.fire( 'someEvent' ), 'fire must return "false"' );\r
- assert.areSame( 0, counter, 'number of calls doesn\'t match' );\r
- },\r
-\r
- test_nestedCancel : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var isCanceledA,\r
- isCanceledB,\r
- isCanceledC;\r
-\r
- testObject.on( 'A', function( ev )\r
- {\r
- isCanceledB = testObject.fire( 'B' );\r
- isCanceledC = testObject.fire( 'C' );\r
- });\r
-\r
- testObject.on( 'B', function( ev )\r
- {\r
- ev.cancel();\r
- });\r
-\r
- testObject.on( 'C', function( ev )\r
- {\r
- });\r
-\r
- isCanceledA = testObject.fire( 'A' );\r
-\r
- assert.areSame( false, isCanceledA, 'event A must not be canceled' );\r
- assert.areSame( true, isCanceledB, 'event B must be canceled' );\r
- assert.areSame( false, isCanceledC, 'event C must not be canceled' );\r
- },\r
-\r
- test_event_removeListener : function()\r
- {\r
- // Create a testObject and implement CKEDITOR.event on it.\r
- var testObject = {};\r
- CKEDITOR.event.implementOn( testObject );\r
-\r
- var counter = 0;\r
-\r
- // Add two listeners for the same event "A".\r
-\r
- testObject.on( 'A', function( ev )\r
- {\r
- counter++;\r
- ev.removeListener();\r
- });\r
-\r
- testObject.on( 'A', function( ev )\r
- {\r
- counter++;\r
- });\r
-\r
- // Fire the event twice.\r
- testObject.fire( 'A' );\r
- testObject.fire( 'A' );\r
-\r
- assert.areSame( 3, counter );\r
- },\r
-\r
- name : document.title\r
- };\r
-})() );\r
-\r
- //]]>\r
- </script>\r
-</head>\r
-<body>\r
-</body>\r
-</html>\r