diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-01-28 09:50:25 -0500 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-01-28 09:50:25 -0500 |
commit | 5744df39e15f85c6cc8a9faf8924d77e76d2b216 (patch) | |
tree | a8c8dd40a94d1fa0d5377566aa5548ae55a163da /tests/phpunit/includes/HtmlTest.php | |
parent | 4bb2aeca1d198391ca856aa16c40b8559c68daec (diff) | |
parent | 224b22a051051f6c2e494c3a2fb4adb42898e2d1 (diff) |
Merge branch 'archwiki'
Conflicts:
extensions/FluxBBAuthPlugin.php
extensions/SyntaxHighlight_GeSHi/README
extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php
extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php
extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php
extensions/SyntaxHighlight_GeSHi/geshi/docs/CHANGES
extensions/SyntaxHighlight_GeSHi/geshi/docs/THANKS
extensions/SyntaxHighlight_GeSHi/geshi/docs/TODO
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractClass.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractClass_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractMethod.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractPrivateClass.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractPrivateClass_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/AbstractPrivateMethod.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Class.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Class_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Constant.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Constructor.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Destructor.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Function.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Global.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/I.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Index.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Interface.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Interface_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/L.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Lminus.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Lplus.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Method.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Page.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Page_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/PrivateClass.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/PrivateClass_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/PrivateMethod.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/PrivateVariable.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/StaticMethod.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/StaticVariable.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/T.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Tminus.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Tplus.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/Variable.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/blank.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/class_folder.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/file.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/folder.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/function_folder.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/next_button.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/next_button_disabled.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/package.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/package_folder.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/previous_button.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/previous_button_disabled.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/private_class_logo.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/tutorial.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/tutorial_folder.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/api/media/images/up_button.png
extensions/SyntaxHighlight_GeSHi/geshi/docs/geshi-doc.html
extensions/SyntaxHighlight_GeSHi/geshi/docs/geshi-doc.txt
extensions/SyntaxHighlight_GeSHi/geshi/geshi.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/4cs.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/6502acme.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/6502kickass.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/6502tasm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/68000devpac.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/abap.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/actionscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/actionscript3.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ada.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/algol68.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/apache.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/applescript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/apt_sources.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/asm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/asp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/autoconf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/autohotkey.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/autoit.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/avisynth.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/awk.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/bascomavr.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/bash.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/basic4gl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/bf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/bibtex.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/blitzbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/bnf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/boo.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/c.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/c_loadrunner.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/c_mac.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/caddcl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cadlisp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cfdg.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cfm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/chaiscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cil.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/clojure.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cmake.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cobol.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/coffeescript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cpp-qt.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cpp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/csharp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/css.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/cuesheet.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/d.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/dcs.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/delphi.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/diff.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/div.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/dos.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/dot.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/e.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ecmascript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/eiffel.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/email.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/epc.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/erlang.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/euphoria.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/f1.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/falcon.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/fo.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/fortran.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/freebasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/fsharp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gambas.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gdb.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/genero.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/genie.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gettext.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/glsl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gml.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gnuplot.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/go.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/groovy.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/gwbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/hicest.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/hq9plus.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/html4strict.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/html5.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/icon.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/idl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ini.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/inno.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/intercal.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/io.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/j.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/java.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/java5.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/javascript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/jquery.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/kixtart.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/klonec.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/klonecpp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/latex.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lb.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lisp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/llvm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/locobasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/logtalk.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lolcode.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lotusformulas.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lotusscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lsl2.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/lua.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/m68k.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/magiksf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/make.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mapbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/matlab.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mirc.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mmix.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/modula2.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/modula3.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mpasm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mxml.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/mysql.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/newlisp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/nsis.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oberon2.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/objc.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/objeck.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ocaml-brief.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ocaml.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oobas.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oracle11.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oracle8.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oxygene.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/oz.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pascal.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pcre.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/per.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/perl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/perl6.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/php-brief.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/php.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pic16.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pike.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pixelbender.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pli.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/plsql.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/postgresql.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/povray.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/powerbuilder.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/powershell.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/proftpd.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/progress.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/prolog.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/properties.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/providex.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/purebasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/pycon.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/python.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/q.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/qbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/rails.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/rebol.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/reg.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/robots.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/rpmspec.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/rsplus.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/ruby.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/sas.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/scala.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/scheme.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/scilab.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/sdlbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/smalltalk.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/smarty.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/sql.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/systemverilog.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/tcl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/teraterm.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/text.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/thinbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/tsql.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/typoscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/unicon.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/uscript.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/vala.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/vb.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/vbnet.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/verilog.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/vhdl.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/vim.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/visualfoxpro.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/visualprolog.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/whitespace.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/whois.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/winbatch.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/xbasic.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/xml.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/xorg_conf.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/xpp.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/yaml.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/z80.php
extensions/SyntaxHighlight_GeSHi/geshi/geshi/zxbasic.php
Diffstat (limited to 'tests/phpunit/includes/HtmlTest.php')
-rw-r--r-- | tests/phpunit/includes/HtmlTest.php | 495 |
1 files changed, 273 insertions, 222 deletions
diff --git a/tests/phpunit/includes/HtmlTest.php b/tests/phpunit/includes/HtmlTest.php index 135ebc5a..1c62d032 100644 --- a/tests/phpunit/includes/HtmlTest.php +++ b/tests/phpunit/includes/HtmlTest.php @@ -2,119 +2,144 @@ /** tests for includes/Html.php */ class HtmlTest extends MediaWikiTestCase { - private static $oldLang; - private static $oldContLang; - private static $oldLanguageCode; - private static $oldNamespaces; - private static $oldHTML5; - public function setUp() { - global $wgLang, $wgContLang, $wgLanguageCode, $wgHTML5; + protected function setUp() { + parent::setUp(); - // Save globals - self::$oldLang = $wgLang; - self::$oldContLang = $wgContLang; - self::$oldNamespaces = $wgContLang->getNamespaces(); - self::$oldLanguageCode = $wgLanguageCode; - self::$oldHTML5 = $wgHTML5; - - $wgLanguageCode = 'en'; - $wgContLang = $wgLang = Language::factory( $wgLanguageCode ); + $langCode = 'en'; + $langObj = Language::factory( $langCode ); // Hardcode namespaces during test runs, // so that html output based on existing namespaces // can be properly evaluated. - $wgContLang->setNamespaces( array( + $langObj->setNamespaces( array( -2 => 'Media', -1 => 'Special', - 0 => '', - 1 => 'Talk', - 2 => 'User', - 3 => 'User_talk', - 4 => 'MyWiki', - 5 => 'MyWiki_Talk', - 6 => 'File', - 7 => 'File_talk', - 8 => 'MediaWiki', - 9 => 'MediaWiki_talk', - 10 => 'Template', - 11 => 'Template_talk', - 14 => 'Category', - 15 => 'Category_talk', - 100 => 'Custom', - 101 => 'Custom_talk', + 0 => '', + 1 => 'Talk', + 2 => 'User', + 3 => 'User_talk', + 4 => 'MyWiki', + 5 => 'MyWiki_Talk', + 6 => 'File', + 7 => 'File_talk', + 8 => 'MediaWiki', + 9 => 'MediaWiki_talk', + 10 => 'Template', + 11 => 'Template_talk', + 14 => 'Category', + 15 => 'Category_talk', + 100 => 'Custom', + 101 => 'Custom_talk', + ) ); + + $this->setMwGlobals( array( + 'wgLanguageCode' => $langCode, + 'wgContLang' => $langObj, + 'wgLang' => $langObj, + 'wgWellFormedXml' => false, ) ); } - public function tearDown() { - global $wgLang, $wgContLang, $wgLanguageCode, $wgHTML5; + public function testElementBasics() { + $this->assertEquals( + '<img>', + Html::element( 'img', null, '' ), + 'No close tag for short-tag elements' + ); - // Restore globals - $wgContLang->setNamespaces( self::$oldNamespaces ); - $wgLang = self::$oldLang; - $wgContLang = self::$oldContLang; - $wgLanguageCode = self::$oldLanguageCode; - $wgHTML5 = self::$oldHTML5; + $this->assertEquals( + '<element></element>', + Html::element( 'element', null, null ), + 'Close tag for empty element (null, null)' + ); + + $this->assertEquals( + '<element></element>', + Html::element( 'element', array(), '' ), + 'Close tag for empty element (array, string)' + ); + + $this->setMwGlobals( 'wgWellFormedXml', true ); + + $this->assertEquals( + '<img />', + Html::element( 'img', null, '' ), + 'Self-closing tag for short-tag elements (wgWellFormedXml = true)' + ); } - /** - * Wrapper to easily set $wgHTML5 = true. - * Original value will be restored after test completion. - * @todo Move to MediaWikiTestCase - */ - public function enableHTML5() { - global $wgHTML5; - $wgHTML5 = true; + public function dataXmlMimeType() { + return array( + // ( $mimetype, $isXmlMimeType ) + # HTML is not an XML MimeType + array( 'text/html', false ), + # XML is an XML MimeType + array( 'text/xml', true ), + array( 'application/xml', true ), + # XHTML is an XML MimeType + array( 'application/xhtml+xml', true ), + # Make sure other +xml MimeTypes are supported + # SVG is another random MimeType even though we don't use it + array( 'image/svg+xml', true ), + # Complete random other MimeTypes are not XML + array( 'text/plain', false ), + ); } + /** - * Wrapper to easily set $wgHTML5 = false - * Original value will be restored after test completion. - * @todo Move to MediaWikiTestCase + * @dataProvider dataXmlMimeType */ - public function disableHTML5() { - global $wgHTML5; - $wgHTML5 = false; + public function testXmlMimeType( $mimetype, $isXmlMimeType ) { + $this->assertEquals( $isXmlMimeType, Html::isXmlMimeType( $mimetype ) ); } public function testExpandAttributesSkipsNullAndFalse() { - + ### EMPTY ######## - $this->AssertEmpty( + $this->assertEmpty( Html::expandAttributes( array( 'foo' => null ) ), 'skip keys with null value' ); - $this->AssertEmpty( + $this->assertEmpty( Html::expandAttributes( array( 'foo' => false ) ), 'skip keys with false value' ); - $this->AssertNotEmpty( + $this->assertNotEmpty( Html::expandAttributes( array( 'foo' => '' ) ), 'keep keys with an empty string' ); } public function testExpandAttributesForBooleans() { - global $wgHtml5; - $this->AssertEquals( + $this->assertEquals( '', Html::expandAttributes( array( 'selected' => false ) ), 'Boolean attributes do not generates output when value is false' ); - $this->AssertEquals( + $this->assertEquals( '', Html::expandAttributes( array( 'selected' => null ) ), 'Boolean attributes do not generates output when value is null' ); - $this->AssertEquals( - $wgHtml5 ? ' selected=""' : ' selected="selected"', + $this->assertEquals( + ' selected', Html::expandAttributes( array( 'selected' => true ) ), - 'Boolean attributes skip value output' + 'Boolean attributes have no value when value is true' ); - $this->AssertEquals( - $wgHtml5 ? ' selected=""' : ' selected="selected"', + $this->assertEquals( + ' selected', Html::expandAttributes( array( 'selected' ) ), - 'Boolean attributes (ex: selected) do not need a value' + 'Boolean attributes have no value when value is true (passed as numerical array)' + ); + + $this->setMwGlobals( 'wgWellFormedXml', true ); + + $this->assertEquals( + ' selected=""', + Html::expandAttributes( array( 'selected' => true ) ), + 'Boolean attributes have empty string value when value is true (wgWellFormedXml)' ); } @@ -124,25 +149,48 @@ class HtmlTest extends MediaWikiTestCase { */ public function testExpandAttributesVariousExpansions() { ### NOT EMPTY #### - $this->AssertEquals( + $this->assertEquals( ' empty_string=""', Html::expandAttributes( array( 'empty_string' => '' ) ), - 'Value with an empty string' + 'Empty string is always quoted' ); - $this->AssertEquals( + $this->assertEquals( + ' key=value', + Html::expandAttributes( array( 'key' => 'value' ) ), + 'Simple string value needs no quotes' + ); + $this->assertEquals( + ' one=1', + Html::expandAttributes( array( 'one' => 1 ) ), + 'Number 1 value needs no quotes' + ); + $this->assertEquals( + ' zero=0', + Html::expandAttributes( array( 'zero' => 0 ) ), + 'Number 0 value needs no quotes' + ); + + $this->setMwGlobals( 'wgWellFormedXml', true ); + + $this->assertEquals( + ' empty_string=""', + Html::expandAttributes( array( 'empty_string' => '' ) ), + 'Attribute values are always quoted (wgWellFormedXml): Empty string' + ); + $this->assertEquals( ' key="value"', Html::expandAttributes( array( 'key' => 'value' ) ), - 'Value is a string' + 'Attribute values are always quoted (wgWellFormedXml): Simple string' ); - $this->AssertEquals( + $this->assertEquals( ' one="1"', Html::expandAttributes( array( 'one' => 1 ) ), - 'Value is a numeric one' + 'Attribute values are always quoted (wgWellFormedXml): Number 1' ); - $this->AssertEquals( + $this->assertEquals( ' zero="0"', Html::expandAttributes( array( 'zero' => 0 ) ), - 'Value is a numeric zero' + 'Attribute values are always quoted (wgWellFormedXml): Number 0' ); } @@ -153,29 +201,29 @@ class HtmlTest extends MediaWikiTestCase { */ public function testExpandAttributesListValueAttributes() { ### STRING VALUES - $this->AssertEquals( + $this->assertEquals( ' class="redundant spaces here"', Html::expandAttributes( array( 'class' => ' redundant spaces here ' ) ), 'Normalization should strip redundant spaces' ); - $this->AssertEquals( + $this->assertEquals( ' class="foo bar"', Html::expandAttributes( array( 'class' => 'foo bar foo bar bar' ) ), 'Normalization should remove duplicates in string-lists' ); ### "EMPTY" ARRAY VALUES - $this->AssertEquals( + $this->assertEquals( ' class=""', Html::expandAttributes( array( 'class' => array() ) ), 'Value with an empty array' ); - $this->AssertEquals( + $this->assertEquals( ' class=""', Html::expandAttributes( array( 'class' => array( null, '', ' ', ' ' ) ) ), 'Array with null, empty string and spaces' ); ### NON-EMPTY ARRAY VALUES - $this->AssertEquals( + $this->assertEquals( ' class="foo bar"', Html::expandAttributes( array( 'class' => array( 'foo', @@ -186,7 +234,7 @@ class HtmlTest extends MediaWikiTestCase { ) ) ), 'Normalization should remove duplicates in the array' ); - $this->AssertEquals( + $this->assertEquals( ' class="foo bar"', Html::expandAttributes( array( 'class' => array( 'foo bar', @@ -202,7 +250,7 @@ class HtmlTest extends MediaWikiTestCase { * Test feature added by r96188, let pass attributes values as * a PHP array. Restricted to class,rel, accesskey. */ - function testExpandAttributesSpaceSeparatedAttributesWithBoolean() { + public function testExpandAttributesSpaceSeparatedAttributesWithBoolean() { $this->assertEquals( ' class="booltrue one"', Html::expandAttributes( array( 'class' => array( @@ -210,12 +258,12 @@ class HtmlTest extends MediaWikiTestCase { 'one' => 1, # Method use isset() internally, make sure we do discard - # attributes values which have been assigned well known values + # attributes values which have been assigned well known values 'emptystring' => '', 'boolfalse' => false, 'zero' => 0, 'null' => null, - ))) + ) ) ) ); } @@ -226,62 +274,62 @@ class HtmlTest extends MediaWikiTestCase { * * Feature added by r96188 */ - function testValueIsAuthoritativeInSpaceSeparatedAttributesArrays() { + public function testValueIsAuthoritativeInSpaceSeparatedAttributesArrays() { $this->assertEquals( ' class=""', Html::expandAttributes( array( 'class' => array( 'GREEN', 'GREEN' => false, 'GREEN', - ))) + ) ) ) ); } - function testNamespaceSelector() { - $this->assertEquals( - '<select>' . "\n" . -'<option value="0">(Main)</option>' . "\n" . -'<option value="1">Talk</option>' . "\n" . -'<option value="2">User</option>' . "\n" . -'<option value="3">User talk</option>' . "\n" . -'<option value="4">MyWiki</option>' . "\n" . -'<option value="5">MyWiki Talk</option>' . "\n" . -'<option value="6">File</option>' . "\n" . -'<option value="7">File talk</option>' . "\n" . -'<option value="8">MediaWiki</option>' . "\n" . -'<option value="9">MediaWiki talk</option>' . "\n" . -'<option value="10">Template</option>' . "\n" . -'<option value="11">Template talk</option>' . "\n" . -'<option value="14">Category</option>' . "\n" . -'<option value="15">Category talk</option>' . "\n" . -'<option value="100">Custom</option>' . "\n" . -'<option value="101">Custom talk</option>' . "\n" . -'</select>', + public function testNamespaceSelector() { + $this->assertEquals( + '<select id=namespace name=namespace>' . "\n" . + '<option value=0>(Main)</option>' . "\n" . + '<option value=1>Talk</option>' . "\n" . + '<option value=2>User</option>' . "\n" . + '<option value=3>User talk</option>' . "\n" . + '<option value=4>MyWiki</option>' . "\n" . + '<option value=5>MyWiki Talk</option>' . "\n" . + '<option value=6>File</option>' . "\n" . + '<option value=7>File talk</option>' . "\n" . + '<option value=8>MediaWiki</option>' . "\n" . + '<option value=9>MediaWiki talk</option>' . "\n" . + '<option value=10>Template</option>' . "\n" . + '<option value=11>Template talk</option>' . "\n" . + '<option value=14>Category</option>' . "\n" . + '<option value=15>Category talk</option>' . "\n" . + '<option value=100>Custom</option>' . "\n" . + '<option value=101>Custom talk</option>' . "\n" . + '</select>', Html::namespaceSelector(), 'Basic namespace selector without custom options' ); $this->assertEquals( - '<label for="mw-test-namespace">Select a namespace:</label> ' . -'<select id="mw-test-namespace" name="wpNamespace">' . "\n" . -'<option value="all">all</option>' . "\n" . -'<option value="0">(Main)</option>' . "\n" . -'<option value="1">Talk</option>' . "\n" . -'<option value="2" selected="">User</option>' . "\n" . -'<option value="3">User talk</option>' . "\n" . -'<option value="4">MyWiki</option>' . "\n" . -'<option value="5">MyWiki Talk</option>' . "\n" . -'<option value="6">File</option>' . "\n" . -'<option value="7">File talk</option>' . "\n" . -'<option value="8">MediaWiki</option>' . "\n" . -'<option value="9">MediaWiki talk</option>' . "\n" . -'<option value="10">Template</option>' . "\n" . -'<option value="11">Template talk</option>' . "\n" . -'<option value="14">Category</option>' . "\n" . -'<option value="15">Category talk</option>' . "\n" . -'<option value="100">Custom</option>' . "\n" . -'<option value="101">Custom talk</option>' . "\n" . -'</select>', + '<label for=mw-test-namespace>Select a namespace:</label> ' . + '<select id=mw-test-namespace name=wpNamespace>' . "\n" . + '<option value=all>all</option>' . "\n" . + '<option value=0>(Main)</option>' . "\n" . + '<option value=1>Talk</option>' . "\n" . + '<option value=2 selected>User</option>' . "\n" . + '<option value=3>User talk</option>' . "\n" . + '<option value=4>MyWiki</option>' . "\n" . + '<option value=5>MyWiki Talk</option>' . "\n" . + '<option value=6>File</option>' . "\n" . + '<option value=7>File talk</option>' . "\n" . + '<option value=8>MediaWiki</option>' . "\n" . + '<option value=9>MediaWiki talk</option>' . "\n" . + '<option value=10>Template</option>' . "\n" . + '<option value=11>Template talk</option>' . "\n" . + '<option value=14>Category</option>' . "\n" . + '<option value=15>Category talk</option>' . "\n" . + '<option value=100>Custom</option>' . "\n" . + '<option value=101>Custom talk</option>' . "\n" . + '</select>', Html::namespaceSelector( array( 'selected' => '2', 'all' => 'all', 'label' => 'Select a namespace:' ), array( 'name' => 'wpNamespace', 'id' => 'mw-test-namespace' ) @@ -290,25 +338,25 @@ class HtmlTest extends MediaWikiTestCase { ); $this->assertEquals( - '<label>Select a namespace:</label> ' . -'<select>' . "\n" . -'<option value="0">(Main)</option>' . "\n" . -'<option value="1">Talk</option>' . "\n" . -'<option value="2">User</option>' . "\n" . -'<option value="3">User talk</option>' . "\n" . -'<option value="4">MyWiki</option>' . "\n" . -'<option value="5">MyWiki Talk</option>' . "\n" . -'<option value="6">File</option>' . "\n" . -'<option value="7">File talk</option>' . "\n" . -'<option value="8">MediaWiki</option>' . "\n" . -'<option value="9">MediaWiki talk</option>' . "\n" . -'<option value="10">Template</option>' . "\n" . -'<option value="11">Template talk</option>' . "\n" . -'<option value="14">Category</option>' . "\n" . -'<option value="15">Category talk</option>' . "\n" . -'<option value="100">Custom</option>' . "\n" . -'<option value="101">Custom talk</option>' . "\n" . -'</select>', + '<label for=namespace>Select a namespace:</label> ' . + '<select id=namespace name=namespace>' . "\n" . + '<option value=0>(Main)</option>' . "\n" . + '<option value=1>Talk</option>' . "\n" . + '<option value=2>User</option>' . "\n" . + '<option value=3>User talk</option>' . "\n" . + '<option value=4>MyWiki</option>' . "\n" . + '<option value=5>MyWiki Talk</option>' . "\n" . + '<option value=6>File</option>' . "\n" . + '<option value=7>File talk</option>' . "\n" . + '<option value=8>MediaWiki</option>' . "\n" . + '<option value=9>MediaWiki talk</option>' . "\n" . + '<option value=10>Template</option>' . "\n" . + '<option value=11>Template talk</option>' . "\n" . + '<option value=14>Category</option>' . "\n" . + '<option value=15>Category talk</option>' . "\n" . + '<option value=100>Custom</option>' . "\n" . + '<option value=101>Custom talk</option>' . "\n" . + '</select>', Html::namespaceSelector( array( 'label' => 'Select a namespace:' ) ), @@ -316,21 +364,21 @@ class HtmlTest extends MediaWikiTestCase { ); } - function testCanFilterOutNamespaces() { - $this->assertEquals( -'<select>' . "\n" . -'<option value="2">User</option>' . "\n" . -'<option value="4">MyWiki</option>' . "\n" . -'<option value="5">MyWiki Talk</option>' . "\n" . -'<option value="6">File</option>' . "\n" . -'<option value="7">File talk</option>' . "\n" . -'<option value="8">MediaWiki</option>' . "\n" . -'<option value="9">MediaWiki talk</option>' . "\n" . -'<option value="10">Template</option>' . "\n" . -'<option value="11">Template talk</option>' . "\n" . -'<option value="14">Category</option>' . "\n" . -'<option value="15">Category talk</option>' . "\n" . -'</select>', + public function testCanFilterOutNamespaces() { + $this->assertEquals( + '<select id=namespace name=namespace>' . "\n" . + '<option value=2>User</option>' . "\n" . + '<option value=4>MyWiki</option>' . "\n" . + '<option value=5>MyWiki Talk</option>' . "\n" . + '<option value=6>File</option>' . "\n" . + '<option value=7>File talk</option>' . "\n" . + '<option value=8>MediaWiki</option>' . "\n" . + '<option value=9>MediaWiki talk</option>' . "\n" . + '<option value=10>Template</option>' . "\n" . + '<option value=11>Template talk</option>' . "\n" . + '<option value=14>Category</option>' . "\n" . + '<option value=15>Category talk</option>' . "\n" . + '</select>', Html::namespaceSelector( array( 'exclude' => array( 0, 1, 3, 100, 101 ) ) ), @@ -338,26 +386,26 @@ class HtmlTest extends MediaWikiTestCase { ); } - function testCanDisableANamespaces() { - $this->assertEquals( -'<select>' . "\n" . -'<option disabled="" value="0">(Main)</option>' . "\n" . -'<option disabled="" value="1">Talk</option>' . "\n" . -'<option disabled="" value="2">User</option>' . "\n" . -'<option disabled="" value="3">User talk</option>' . "\n" . -'<option disabled="" value="4">MyWiki</option>' . "\n" . -'<option value="5">MyWiki Talk</option>' . "\n" . -'<option value="6">File</option>' . "\n" . -'<option value="7">File talk</option>' . "\n" . -'<option value="8">MediaWiki</option>' . "\n" . -'<option value="9">MediaWiki talk</option>' . "\n" . -'<option value="10">Template</option>' . "\n" . -'<option value="11">Template talk</option>' . "\n" . -'<option value="14">Category</option>' . "\n" . -'<option value="15">Category talk</option>' . "\n" . -'<option value="100">Custom</option>' . "\n" . -'<option value="101">Custom talk</option>' . "\n" . -'</select>', + public function testCanDisableANamespaces() { + $this->assertEquals( + '<select id=namespace name=namespace>' . "\n" . + '<option disabled value=0>(Main)</option>' . "\n" . + '<option disabled value=1>Talk</option>' . "\n" . + '<option disabled value=2>User</option>' . "\n" . + '<option disabled value=3>User talk</option>' . "\n" . + '<option disabled value=4>MyWiki</option>' . "\n" . + '<option value=5>MyWiki Talk</option>' . "\n" . + '<option value=6>File</option>' . "\n" . + '<option value=7>File talk</option>' . "\n" . + '<option value=8>MediaWiki</option>' . "\n" . + '<option value=9>MediaWiki talk</option>' . "\n" . + '<option value=10>Template</option>' . "\n" . + '<option value=11>Template talk</option>' . "\n" . + '<option value=14>Category</option>' . "\n" . + '<option value=15>Category talk</option>' . "\n" . + '<option value=100>Custom</option>' . "\n" . + '<option value=101>Custom talk</option>' . "\n" . + '</select>', Html::namespaceSelector( array( 'disable' => array( 0, 1, 2, 3, 4 ) ) ), @@ -366,13 +414,12 @@ class HtmlTest extends MediaWikiTestCase { } /** - * @dataProvider providesHtml5InputTypes + * @dataProvider provideHtml5InputTypes */ - function testHtmlElementAcceptsNewHtml5TypesInHtml5Mode( $HTML5InputType ) { - $this->enableHTML5(); + public function testHtmlElementAcceptsNewHtml5TypesInHtml5Mode( $HTML5InputType ) { $this->assertEquals( - '<input type="' . $HTML5InputType . '" />', - HTML::element( 'input', array( 'type' => $HTML5InputType ) ), + '<input type=' . $HTML5InputType . '>', + Html::element( 'input', array( 'type' => $HTML5InputType ) ), 'In HTML5, HTML::element() should accept type="' . $HTML5InputType . '"' ); } @@ -381,7 +428,7 @@ class HtmlTest extends MediaWikiTestCase { * List of input element types values introduced by HTML5 * Full list at http://www.w3.org/TR/html-markup/input.html */ - function providesHtml5InputTypes() { + public static function provideHtml5InputTypes() { $types = array( 'datetime', 'datetime-local', @@ -398,42 +445,39 @@ class HtmlTest extends MediaWikiTestCase { 'color', ); $cases = array(); - foreach( $types as $type ) { + foreach ( $types as $type ) { $cases[] = array( $type ); } + return $cases; } /** - * Test out Html::element drops default value - * @cover Html::dropDefaults + * Test out Html::element drops or enforces default value + * @covers Html::dropDefaults * @dataProvider provideElementsWithAttributesHavingDefaultValues */ - function testDropDefaults( $expected, $element, $message = '' ) { - $this->enableHTML5(); - $this->assertEquals( $expected, $element, $message ); + public function testDropDefaults( $expected, $element, $attribs, $message = '' ) { + $this->assertEquals( $expected, Html::element( $element, $attribs ), $message ); } - function provideElementsWithAttributesHavingDefaultValues() { + public static function provideElementsWithAttributesHavingDefaultValues() { # Use cases in a concise format: # <expected>, <element name>, <array of attributes> [, <message>] # Will be mapped to Html::element() $cases = array(); ### Generic cases, match $attribDefault static array - $cases[] = array( '<area />', + $cases[] = array( '<area>', 'area', array( 'shape' => 'rect' ) ); - $cases[] = array( '<button></button>', + $cases[] = array( '<button type=submit></button>', 'button', array( 'formaction' => 'GET' ) ); - $cases[] = array( '<button></button>', + $cases[] = array( '<button type=submit></button>', 'button', array( 'formenctype' => 'application/x-www-form-urlencoded' ) ); - $cases[] = array( '<button></button>', - 'button', array( 'type' => 'submit' ) - ); $cases[] = array( '<canvas></canvas>', 'canvas', array( 'height' => '150' ) @@ -449,7 +493,7 @@ class HtmlTest extends MediaWikiTestCase { 'canvas', array( 'width' => 300 ) ); - $cases[] = array( '<command />', + $cases[] = array( '<command>', 'command', array( 'type' => 'command' ) ); @@ -463,18 +507,18 @@ class HtmlTest extends MediaWikiTestCase { 'form', array( 'enctype' => 'application/x-www-form-urlencoded' ) ); - $cases[] = array( '<input />', + $cases[] = array( '<input>', 'input', array( 'formaction' => 'GET' ) ); - $cases[] = array( '<input />', + $cases[] = array( '<input>', 'input', array( 'type' => 'text' ) ); - $cases[] = array( '<keygen />', + $cases[] = array( '<keygen>', 'keygen', array( 'keytype' => 'rsa' ) ); - $cases[] = array( '<link />', + $cases[] = array( '<link>', 'link', array( 'media' => 'all' ) ); @@ -499,37 +543,44 @@ class HtmlTest extends MediaWikiTestCase { ### SPECIFIC CASES - # <link type="text/css" /> - $cases[] = array( '<link />', + # <link type="text/css"> + $cases[] = array( '<link>', 'link', array( 'type' => 'text/css' ) ); - # <input /> specific handling - $cases[] = array( '<input type="checkbox" />', + # <input> specific handling + $cases[] = array( '<input type=checkbox>', 'input', array( 'type' => 'checkbox', 'value' => 'on' ), 'Default value "on" is stripped of checkboxes', ); - $cases[] = array( '<input type="radio" />', + $cases[] = array( '<input type=radio>', 'input', array( 'type' => 'radio', 'value' => 'on' ), 'Default value "on" is stripped of radio buttons', ); - $cases[] = array( '<input type="submit" value="Submit" />', + $cases[] = array( '<input type=submit value=Submit>', 'input', array( 'type' => 'submit', 'value' => 'Submit' ), 'Default value "Submit" is kept on submit buttons (for possible l10n issues)', ); - $cases[] = array( '<input type="color" />', + $cases[] = array( '<input type=color>', 'input', array( 'type' => 'color', 'value' => '' ), ); - $cases[] = array( '<input type="range" />', + $cases[] = array( '<input type=range>', 'input', array( 'type' => 'range', 'value' => '' ), ); - # <select /> specifc handling - $cases[] = array( '<select multiple=""></select>', + # <button> specific handling + # see remarks on http://msdn.microsoft.com/en-us/library/ie/ms535211%28v=vs.85%29.aspx + $cases[] = array( '<button type=submit></button>', + 'button', array( 'type' => 'submit' ), + 'According to standard the default type is "submit". Depending on compatibility mode IE might use "button", instead.', + ); + + # <select> specifc handling + $cases[] = array( '<select multiple></select>', 'select', array( 'size' => '4', 'multiple' => true ), ); # .. with numeric value - $cases[] = array( '<select multiple=""></select>', + $cases[] = array( '<select multiple></select>', 'select', array( 'size' => 4, 'multiple' => true ), ); $cases[] = array( '<select></select>', @@ -553,15 +604,16 @@ class HtmlTest extends MediaWikiTestCase { "dropDefaults accepts values given as an array" ); - # Craft the Html elements $ret = array(); - foreach( $cases as $case ) { + foreach ( $cases as $case ) { $ret[] = array( $case[0], - Html::element( $case[1], $case[2] ) + $case[1], $case[2], + isset( $case[3] ) ? $case[3] : '' ); } + return $ret; } @@ -571,10 +623,9 @@ class HtmlTest extends MediaWikiTestCase { 'Blacklist form validation attributes.' ); $this->assertEquals( - ' step="any"', + ' step=any', Html::expandAttributes( array( 'min' => 1, 'max' => 100, 'pattern' => 'abc', 'required' => true, 'step' => 'any' ) ), - "Allow special case 'step=\"any\"'." + 'Allow special case "step=any".' ); } - } |