.
/**
* Unit tests for the html_writer class.
*
* @package core
* @category phpunit
* @copyright 2010 Tim Hunt
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->libdir . '/outputcomponents.php');
/**
* Unit tests for the html_writer class.
*
* @copyright 2010 Tim Hunt
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_html_writer_testcase extends basic_testcase {
public function test_start_tag() {
$this->assertSame('
', html_writer::start_tag('div'));
}
public function test_start_tag_with_attr() {
$this->assertSame('
',
html_writer::start_tag('div', array('class' => 'frog')));
}
public function test_start_tag_with_attrs() {
$this->assertSame('
',
html_writer::start_tag('div', array('class' => 'frog', 'id' => 'mydiv')));
}
public function test_end_tag() {
$this->assertSame('
', html_writer::end_tag('div'));
}
public function test_empty_tag() {
$this->assertSame(' ', html_writer::empty_tag('br'));
}
public function test_empty_tag_with_attrs() {
$this->assertSame('',
html_writer::empty_tag('input', array('type' => 'submit', 'value' => 'frog')));
}
public function test_nonempty_tag_with_content() {
$this->assertSame('
Hello world!
',
html_writer::nonempty_tag('div', 'Hello world!'));
}
public function test_nonempty_tag_empty() {
$this->assertSame('',
html_writer::nonempty_tag('div', ''));
}
public function test_nonempty_tag_null() {
$this->assertSame('',
html_writer::nonempty_tag('div', null));
}
public function test_nonempty_tag_zero() {
$this->assertSame('
0
',
html_writer::nonempty_tag('div', 0, array('class' => 'score')));
}
public function test_nonempty_tag_zero_string() {
$this->assertSame('
0
',
html_writer::nonempty_tag('div', '0', array('class' => 'score')));
}
public function test_div() {
// All options.
$this->assertSame('
ribbit
',
html_writer::div('ribbit', 'frog', array('id' => 'kermit')));
// Combine class from attributes and $class.
$this->assertSame('
ribbit
',
html_writer::div('ribbit', 'frog', array('class' => 'amphibian')));
// Class only.
$this->assertSame('
',
html_writer::start_div('', array('id' => 'kermit')));
// No options.
$this->assertSame('
',
html_writer::start_div());
}
public function test_end_div() {
$this->assertSame('
', html_writer::end_div());
}
public function test_span() {
// All options.
$this->assertSame('ribbit',
html_writer::span('ribbit', 'frog', array('id' => 'kermit')));
// Combine class from attributes and $class.
$this->assertSame('ribbit',
html_writer::span('ribbit', 'frog', array('class' => 'amphibian')));
// Class only.
$this->assertSame('ribbit',
html_writer::span('ribbit', 'frog'));
// Attributes only.
$this->assertSame('ribbit',
html_writer::span('ribbit', '', array('id' => 'kermit')));
// No options.
$this->assertSame('ribbit',
html_writer::span('ribbit'));
}
public function test_start_span() {
// All options.
$this->assertSame('',
html_writer::start_span('frog', array('id' => 'kermit')));
// Combine class from attributes and $class.
$this->assertSame('',
html_writer::start_span('frog', array('class' => 'amphibian')));
// Class only.
$this->assertSame('',
html_writer::start_span('frog'));
// Attributes only.
$this->assertSame('',
html_writer::start_span('', array('id' => 'kermit')));
// No options.
$this->assertSame('',
html_writer::start_span());
}
public function test_end_span() {
$this->assertSame('', html_writer::end_span());
}
public function test_table() {
$row = new html_table_row();
// The attribute will get overwritten by the ID.
$row->id = 'Bob';
$row->attributes['id'] = 'will get overwritten';
// The data-name will be present in the output.
$row->attributes['data-name'] = 'Fred';
$row->class = 'this is a table row';
$cell = new html_table_cell();
// The attribute will get overwritten by the ID.
$cell->id = 'Jeremy';
$cell->attributes['id'] = 'will get overwritten';
// The data-name will be present in the output.
$cell->attributes['data-name'] = 'John';
$cell->class = 'this is a table cell';
$row->cells[] = $cell;
$table = new html_table();
// The attribute will get overwritten by the ID.
$table->id = 'Jeffrey';
$table->attributes['id'] = 'will get overwritten';
// The data-name will be present in the output.
$table->attributes['data-name'] = 'Colin';
// The attribute will get overwritten by the ID above.
$table->data[] = $row;
// Specify a caption to be output.
$table->caption = "A table of meaningless data.";
$output = html_writer::table($table);
$expected = <<
A table of meaningless data.
EOF;
$this->assertSame($expected, $output);
}
public function test_table_hidden_caption() {
$table = new html_table();
$table->id = "whodat";
$table->data = array(
array('fred', 'MDK'),
array('bob', 'Burgers'),
array('dave', 'Competitiveness')
);
$table->caption = "Who even knows?";
$table->captionhide = true;
$output = html_writer::table($table);
$expected = <<