2 * mediaWiki Debug Test Suit on [[Special:MWUtilJSTest]] (only when ?debug=true)
10 '$bodyContent' : null,
17 * Adds a row to the test-table
19 * @param String code Code of the test to be executed
20 * @param String result Expected result in 'var (vartype)' form.
22 'addTest' : function (code, result) {
23 this.addedTests.push([code, result]);
24 this.$table.append('<tr><td>' + mw.util.htmlEscape(code) + '</td><td>' + mw.util.htmlEscape(result) + '<td></td></td><td>?</td></tr>');
28 'initialised' : false,
29 'init' : function () {
30 if (this.initialised === false) {
31 this.initialised = true;
33 if (wgTitle == 'MWUtilJSTest' && wgCanonicalNamespace == 'Special') {
36 document.title = 'mediaWiki.util JavaScript Test - ' + wgSiteName;
37 $('#firstHeading').text('mediaWiki.util JavaScript Test');
38 mw.test.bodyContent = $('#bodyContent');
39 mw.test.bodyContent.html(
40 '<p>Below is a list of tests to confirm proper functionality of the mediaWiki.util functions</p>' +
42 '<table id="mw-mwutiltest-table" class="wikitable sortable"><tr><th>Exec</th><th>Should return</th><th>Does return</th><th>Equal ?</th></tr></table>'
44 mw.test.$table = $('table#mw-mwutiltest-table');
47 mw.test.addTest('typeof String.prototype.trim',
49 mw.test.addTest('typeof String.prototype.trimLeft',
51 mw.test.addTest('typeof String.prototype.trimRight',
53 mw.test.addTest('typeof Array.prototype.compare',
55 mw.test.addTest('typeof Array.prototype.indexOf',
59 mw.test.addTest('typeof mediaWiki',
61 mw.test.addTest('typeof mw',
63 mw.test.addTest('typeof mw.util',
65 mw.test.addTest('typeof String.prototype.ucFirst',
67 mw.test.addTest('\'mediawiki\'.ucFirst()',
68 'Mediawiki (string)');
69 mw.test.addTest('typeof $.fn.enableCheckboxShiftClick',
71 mw.test.addTest('typeof mw.util.rawurlencode',
73 mw.test.addTest('mw.util.rawurlencode(\'Test: A&B/Here\')',
74 'Test%3A%20A%26B%2FHere (string)');
75 mw.test.addTest('typeof mw.util.getWikilink',
77 mw.test.addTest('typeof mw.util.getParamValue',
79 mw.test.addTest('mw.util.getParamValue(\'debug\')',
81 mw.test.addTest('typeof mw.util.htmlEscape',
83 mw.test.addTest('mw.util.htmlEscape(\'<a href="http://mw.org/?a=b&c=d">link</a>\')',
84 '<a href="http://mw.org/?a=b&c=d">link</a> (string)');
85 mw.test.addTest('typeof mw.util.htmlUnescape',
87 mw.test.addTest('mw.util.htmlUnescape(\'<a href="http://mw.org/?a=b&c=d">link</a>\')',
88 '<a href="http://mw.org/?a=b&c=d">link</a> (string)');
89 mw.test.addTest('typeof mw.util.tooltipAccessKeyRegexp',
91 mw.test.addTest('typeof mw.util.updateTooltipAccessKeys',
93 mw.test.addTest('typeof mw.util.addPortletLink',
95 mw.test.addTest('typeof mw.util.addPortletLink("p-tb", "http://mediawiki.org/", "MediaWiki.org", "t-mworg", "Go to MediaWiki.org ", "m", "#t-print")',
97 mw.test.addTest('mw.util.addPortletLink("p-tb", "http://mediawiki.org/", "MediaWiki.org", "t-mworg", "Go to MediaWiki.org ", "m", "#t-print").outerHTML',
98 '<li id="t-mworg"><span><a href="http://mediawiki.org/" accesskey="m" title="Go to MediaWiki.org [ctrl-alt-m]">MediaWiki.org</a></span></li> (string)');
100 // Run tests and compare results
107 $testrows = mw.test.$table.find('tr');
108 $.each(mw.test.addedTests, (function (i) {
111 exec = mw.test.addedTests[i][0];
112 shouldreturn = mw.test.addedTests[i][1];
113 doesreturn = eval(exec);
114 doesreturn = doesreturn + ' (' + typeof doesreturn + ')';
115 $thisrow = $testrows.eq(i + 1);
116 $thisrow.find('> td').eq(2).text(doesreturn);
118 if (shouldreturn === doesreturn) {
119 $thisrow.find('> td').eq(3).css('background', '#EFE').text('OK');
121 $thisrow.find('> td').eq(3).css('background', '#FEE').text('ERROR');
127 mw.test.$table.before('<p><strong>Ran ' + numberoftests + ' tests. ' + numberoferrors + ' error(s). </p>');
135 mediaWiki.test.init();
137 })(jQuery, mediaWiki);