JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.0
[ckeditor.git] / _source / tests / test.js
1 /*\r
2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license\r
4 */\r
5 \r
6 /*jsl:import yuitest.js*/\r
7 \r
8 // Inject the YUI Test files into the page.\r
9 // URLs copied from http://developer.yahoo.com/yui/yuitest/\r
10 document.write(\r
11         '<script type="text/javascript" src="' +\r
12         CKEDITOR.basePath +\r
13         '_tests/yuitest.js"></script>' );\r
14 \r
15 document.write(\r
16         '<script type="text/javascript" src="' +\r
17         CKEDITOR.basePath +\r
18         '_source/' +\r
19         'core/test.js"></script>' );\r
20 \r
21 (function()\r
22 {\r
23         var createLogger = function()\r
24         {\r
25                 document.body.appendChild( document.createElement( 'div' ) ).id = 'testLogger';\r
26         };\r
27 \r
28         var outputResult = function( text )\r
29         {\r
30                 var div = document.getElementById('testLogger').appendChild( document.createElement( 'div' ) );\r
31                 div.className = 'testEntry';\r
32                 div.innerHTML = text;\r
33         };\r
34 \r
35         var htmlEncode = function( data )\r
36         {\r
37                 if ( typeof data != 'string' )\r
38                         return data;\r
39 \r
40                 return data.replace(\r
41                         /&/g, '&amp;' ).replace(\r
42                         /</g, '&lt;' ).replace(\r
43                         />/g, '&gt;' );\r
44         };\r
45 \r
46         window.onload = function()\r
47         {\r
48                 createLogger();\r
49                 var runner = YAHOO.tool.TestRunner;\r
50 \r
51                 var handleTestResult = function( data )\r
52                 {\r
53                         switch( data.type )\r
54                         {\r
55                                 case runner.TEST_FAIL_EVENT:\r
56 \r
57                                         var expected = data.error.expected;\r
58                                         if ( expected && expected.nodeType )\r
59                                                 expected += ' (' + ( expected.nodeType == 1 ? expected.nodeName : expected.nodeValue ) + ')';\r
60 \r
61                                         var actual = data.error.actual;\r
62                                         if ( actual && actual.nodeType )\r
63                                                 actual += ' (' + ( actual.nodeType == 1 ? actual.nodeName : actual.nodeValue ) + ')';\r
64 \r
65                                         outputResult(\r
66                                                 '<span class="testFail">FAIL</span> Test named "' + data.testName +\r
67                                                 '" failed with message: "' + htmlEncode( data.error.message ) +\r
68                                                 '".<div>Expected:</div><pre>' + htmlEncode( expected ) +\r
69                                                 '<br></pre><div>Actual:</div><pre>' + htmlEncode( actual ) + '<br></pre>' );\r
70                                         break;\r
71                                 case runner.TEST_PASS_EVENT:\r
72                                         outputResult( '<span class="testPass">PASS</span> Test named "' + data.testName + '" passed.' );\r
73                                         break;\r
74                                 case runner.TEST_IGNORE_EVENT:\r
75                                         outputResult( '<span class="testIgnore">IGNORE</span> Test named "' + data.testName + '" was ignored.' );\r
76                                         break;\r
77                         }\r
78                 };\r
79 \r
80                 runner.subscribe(runner.TEST_FAIL_EVENT, handleTestResult);\r
81                 runner.subscribe(runner.TEST_IGNORE_EVENT, handleTestResult);\r
82                 runner.subscribe(runner.TEST_PASS_EVENT, handleTestResult);\r
83 \r
84                 if ( window.parent && window.parent.onTestStart )\r
85                 {\r
86                         runner.subscribe(runner.TEST_CASE_BEGIN_EVENT, window.parent.onTestStart);\r
87                         runner.subscribe(runner.TEST_CASE_COMPLETE_EVENT, window.parent.onTestComplete);\r
88                 }\r
89 \r
90                 if ( !CKEDITOR.test.deferRunner )\r
91                         runner.run();\r
92         };\r
93 })();\r