Revert "merged master"
[lhc/web/wiklou.git] / tests / phpunit / includes / XmlSelectTest.php
1 <?php
2
3 // TODO
4 class XmlSelectTest extends MediaWikiTestCase {
5 protected $select;
6
7 protected function setUp() {
8 $this->select = new XmlSelect();
9 }
10 protected function tearDown() {
11 $this->select = null;
12 }
13
14 ### START OF TESTS ###
15
16 public function testConstructWithoutParameters() {
17 $this->assertEquals( '<select></select>', $this->select->getHTML() );
18 }
19
20 /**
21 * Parameters are $name (false), $id (false), $default (false)
22 * @dataProvider provideConstructionParameters
23 */
24 public function testConstructParameters( $name, $id, $default, $expected ) {
25 $this->select = new XmlSelect( $name, $id, $default );
26 $this->assertEquals( $expected, $this->select->getHTML() );
27 }
28
29 /**
30 * Provide parameters for testConstructParameters() which use three
31 * parameters:
32 * - $name (default: false)
33 * - $id (default: false)
34 * - $default (default: false)
35 * Provides a fourth parameters representing the expected HTML output
36 *
37 */
38 public function provideConstructionParameters() {
39 return array(
40 /**
41 * Values are set following a 3-bit Gray code where two successive
42 * values differ by only one value.
43 * See http://en.wikipedia.org/wiki/Gray_code
44 */
45 # $name $id $default
46 array( false , false, false, '<select></select>' ),
47 array( false , false, 'foo', '<select></select>' ),
48 array( false , 'id' , 'foo', '<select id="id"></select>' ),
49 array( false , 'id' , false, '<select id="id"></select>' ),
50 array( 'name', 'id' , false, '<select name="name" id="id"></select>' ),
51 array( 'name', 'id' , 'foo', '<select name="name" id="id"></select>' ),
52 array( 'name', false, 'foo', '<select name="name"></select>' ),
53 array( 'name', false, false, '<select name="name"></select>' ),
54 );
55 }
56
57 # Begin XmlSelect::addOption() similar to Xml::option
58 public function testAddOption() {
59 $this->select->addOption( 'foo' );
60 $this->assertEquals( '<select><option value="foo">foo</option></select>', $this->select->getHTML() );
61 }
62 public function testAddOptionWithDefault() {
63 $this->select->addOption( 'foo', true );
64 $this->assertEquals( '<select><option value="1">foo</option></select>', $this->select->getHTML() );
65 }
66 public function testAddOptionWithFalse() {
67 $this->select->addOption( 'foo', false );
68 $this->assertEquals( '<select><option value="foo">foo</option></select>', $this->select->getHTML() );
69 }
70 public function testAddOptionWithValueZero() {
71 $this->select->addOption( 'foo', 0 );
72 $this->assertEquals( '<select><option value="0">foo</option></select>', $this->select->getHTML() );
73 }
74 # End XmlSelect::addOption() similar to Xml::option
75
76 public function testSetDefault() {
77 $this->select->setDefault( 'bar1' );
78 $this->select->addOption( 'foo1' );
79 $this->select->addOption( 'bar1' );
80 $this->select->addOption( 'foo2' );
81 $this->assertEquals(
82 '<select><option value="foo1">foo1</option>' . "\n" .
83 '<option value="bar1" selected="">bar1</option>' . "\n" .
84 '<option value="foo2">foo2</option></select>', $this->select->getHTML() );
85 }
86
87 /**
88 * Adding default later on should set the correct selection or
89 * raise an exception.
90 * To handle this, we need to render the options in getHtml()
91 */
92 public function testSetDefaultAfterAddingOptions() {
93 $this->select->addOption( 'foo1' );
94 $this->select->addOption( 'bar1' );
95 $this->select->addOption( 'foo2' );
96 $this->select->setDefault( 'bar1' ); # setting default after adding options
97 $this->assertEquals(
98 '<select><option value="foo1">foo1</option>' . "\n" .
99 '<option value="bar1" selected="">bar1</option>' . "\n" .
100 '<option value="foo2">foo2</option></select>', $this->select->getHTML() );
101 }
102
103 public function testGetAttributes() {
104 # create some attributes
105 $this->select->setAttribute( 'dummy', 0x777 );
106 $this->select->setAttribute( 'string', 'euro €' );
107 $this->select->setAttribute( 1911, 'razor' );
108
109 # verify we can retrieve them
110 $this->assertEquals(
111 $this->select->getAttribute( 'dummy' ),
112 0x777
113 );
114 $this->assertEquals(
115 $this->select->getAttribute( 'string' ),
116 'euro €'
117 );
118 $this->assertEquals(
119 $this->select->getAttribute( 1911 ),
120 'razor'
121 );
122
123 # inexistant keys should give us 'null'
124 $this->assertEquals(
125 $this->select->getAttribute( 'I DO NOT EXIT' ),
126 null
127 );
128
129 # verify string / integer
130 $this->assertEquals(
131 $this->select->getAttribute( '1911' ),
132 'razor'
133 );
134 $this->assertEquals(
135 $this->select->getAttribute( 'dummy' ),
136 0x777
137 );
138 }
139 }