. /** * Unit tests for /lib/formslib.php. * * @package file * @copyright 2011 Sam Hemelryk * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ if (!defined('MOODLE_INTERNAL')) { die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page } require_once($CFG->libdir . '/formslib.php'); class formslib_test extends UnitTestCase { public function test_require_rule() { global $CFG; $strictformsrequired = false; if (!empty($CFG->strictformsrequired)) { $strictformsrequired = $CFG->strictformsrequired; } $rule = new MoodleQuickForm_Rule_Required(); // First run the tests with strictformsrequired off $CFG->strictformsrequired = false; // Passes $this->assertTrue($rule->validate('Something')); $this->assertTrue($rule->validate("Something\nmore")); $this->assertTrue($rule->validate("\nmore")); $this->assertTrue($rule->validate(" more ")); $this->assertTrue($rule->validate("0")); $this->assertTrue($rule->validate(0)); $this->assertTrue($rule->validate(true)); $this->assertTrue($rule->validate(' ')); $this->assertTrue($rule->validate(' ')); $this->assertTrue($rule->validate("\t")); $this->assertTrue($rule->validate("\n")); $this->assertTrue($rule->validate("\r")); $this->assertTrue($rule->validate("\r\n")); $this->assertTrue($rule->validate(" \t \n \r ")); $this->assertTrue($rule->validate('

')); $this->assertTrue($rule->validate('

')); $this->assertTrue($rule->validate('

x

')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate(' ')); // Fails $this->assertFalse($rule->validate('')); $this->assertFalse($rule->validate(false)); $this->assertFalse($rule->validate(null)); // Now run the same tests with it on to make sure things work as expected $CFG->strictformsrequired = true; // Passes $this->assertTrue($rule->validate('Something')); $this->assertTrue($rule->validate("Something\nmore")); $this->assertTrue($rule->validate("\nmore")); $this->assertTrue($rule->validate(" more ")); $this->assertTrue($rule->validate("0")); $this->assertTrue($rule->validate(0)); $this->assertTrue($rule->validate(true)); $this->assertTrue($rule->validate('

x

')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('smile')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); $this->assertTrue($rule->validate('
')); // Fails $this->assertFalse($rule->validate(' ')); $this->assertFalse($rule->validate(' ')); $this->assertFalse($rule->validate("\t")); $this->assertFalse($rule->validate("\n")); $this->assertFalse($rule->validate("\r")); $this->assertFalse($rule->validate("\r\n")); $this->assertFalse($rule->validate(" \t \n \r ")); $this->assertFalse($rule->validate('

')); $this->assertFalse($rule->validate('

')); $this->assertFalse($rule->validate('
')); $this->assertFalse($rule->validate('
')); $this->assertFalse($rule->validate('
')); $this->assertFalse($rule->validate(' ')); $this->assertFalse($rule->validate('')); $this->assertFalse($rule->validate(false)); $this->assertFalse($rule->validate(null)); $CFG->strictformsrequired = $strictformsrequired; } }