2011-07-04 19:51:35 +00:00
|
|
|
<?php
|
|
|
|
|
/** tests for includes/Html.php */
|
|
|
|
|
|
|
|
|
|
class HtmlTest extends MediaWikiTestCase {
|
|
|
|
|
private static $oldLang;
|
2011-08-05 15:10:08 +00:00
|
|
|
private static $oldContLang;
|
2011-07-04 19:51:35 +00:00
|
|
|
|
|
|
|
|
public function setUp() {
|
2011-08-05 15:10:08 +00:00
|
|
|
global $wgLang, $wgContLang, $wgLanguageCode;
|
2011-07-04 19:51:35 +00:00
|
|
|
|
|
|
|
|
self::$oldLang = $wgLang;
|
2011-08-05 15:10:08 +00:00
|
|
|
self::$oldContLang = $wgContLang;
|
|
|
|
|
|
2011-07-04 19:51:35 +00:00
|
|
|
$wgLanguageCode = 'en';
|
2011-08-05 15:10:08 +00:00
|
|
|
$wgContLang = $wgLang = Language::factory( $wgLanguageCode );
|
2011-07-04 19:51:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function tearDown() {
|
2011-08-05 15:10:08 +00:00
|
|
|
global $wgLang, $wgContLang, $wgLanguageCode;
|
2011-07-04 19:51:35 +00:00
|
|
|
$wgLang = self::$oldLang;
|
2011-08-05 15:10:08 +00:00
|
|
|
$wgContLang = self::$oldContLang;
|
|
|
|
|
$wgLanguageCode = $wgContLang->getCode();
|
2011-07-04 19:51:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testExpandAttributesSkipsNullAndFalse() {
|
|
|
|
|
|
|
|
|
|
### EMPTY ########
|
|
|
|
|
$this->AssertEmpty(
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'foo' => null ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'skip keys with null value'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEmpty(
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'foo' => false ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'skip keys with false value'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertNotEmpty(
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'foo' => '' ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'keep keys with an empty string'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testExpandAttributesForBooleans() {
|
2011-07-19 22:10:05 +00:00
|
|
|
global $wgHtml5;
|
2011-07-04 19:51:35 +00:00
|
|
|
$this->AssertEquals(
|
|
|
|
|
'',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'selected' => false ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Boolean attributes do not generates output when value is false'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
'',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'selected' => null ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Boolean attributes do not generates output when value is null'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->AssertEquals(
|
2011-07-19 22:10:05 +00:00
|
|
|
$wgHtml5 ? ' selected=""' : ' selected="selected"',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'selected' => true ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Boolean attributes skip value output'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
2011-07-19 22:10:05 +00:00
|
|
|
$wgHtml5 ? ' selected=""' : ' selected="selected"',
|
2011-07-04 19:51:35 +00:00
|
|
|
Html::expandAttributes( array( 'selected' ) ),
|
|
|
|
|
'Boolean attributes (ex: selected) do not need a value'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Test for Html::expandAttributes()
|
|
|
|
|
* Please note it output a string prefixed with a space!
|
|
|
|
|
*/
|
|
|
|
|
public function testExpandAttributesVariousExpansions() {
|
|
|
|
|
### NOT EMPTY ####
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' empty_string=""',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'empty_string' => '' ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Value with an empty string'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' key="value"',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'key' => 'value' ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Value is a string'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' one="1"',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'one' => 1 ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Value is a numeric one'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' zero="0"',
|
2011-09-03 01:42:43 +00:00
|
|
|
Html::expandAttributes( array( 'zero' => 0 ) ),
|
2011-07-04 19:51:35 +00:00
|
|
|
'Value is a numeric zero'
|
|
|
|
|
);
|
|
|
|
|
}
|
2011-09-03 03:55:23 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Html::expandAttributes has special features for HTML
|
|
|
|
|
* attributes that use space separated lists and also
|
|
|
|
|
* allows arrays to be used as values.
|
|
|
|
|
*/
|
|
|
|
|
public function testExpandAttributesListValueAttributes() {
|
|
|
|
|
### STRING VALUES
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' class="redundant spaces here"',
|
|
|
|
|
Html::expandAttributes( array( 'class' => ' redundant spaces here ' ) ),
|
|
|
|
|
'Normalization should strip redundant spaces'
|
|
|
|
|
);
|
|
|
|
|
$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(
|
|
|
|
|
' class=""',
|
|
|
|
|
Html::expandAttributes( array( 'class' => array() ) ),
|
|
|
|
|
'Value with an empty array'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' class=""',
|
|
|
|
|
Html::expandAttributes( array( 'class' => array( null, '', ' ', ' ' ) ) ),
|
|
|
|
|
'Array with null, empty string and spaces'
|
|
|
|
|
);
|
|
|
|
|
### NON-EMPTY ARRAY VALUES
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' class="foo bar"',
|
|
|
|
|
Html::expandAttributes( array( 'class' => array(
|
|
|
|
|
'foo',
|
|
|
|
|
'bar',
|
|
|
|
|
'foo',
|
|
|
|
|
'bar',
|
|
|
|
|
'bar',
|
|
|
|
|
) ) ),
|
|
|
|
|
'Normalization should remove duplicates in the array'
|
|
|
|
|
);
|
|
|
|
|
$this->AssertEquals(
|
|
|
|
|
' class="foo bar"',
|
|
|
|
|
Html::expandAttributes( array( 'class' => array(
|
|
|
|
|
'foo bar',
|
|
|
|
|
'bar foo',
|
|
|
|
|
'foo',
|
|
|
|
|
'bar bar',
|
|
|
|
|
) ) ),
|
|
|
|
|
'Normalization should remove duplicates in string-lists in the array'
|
|
|
|
|
);
|
|
|
|
|
}
|
2011-07-04 19:51:35 +00:00
|
|
|
}
|