function testPHPExtension() { // Testing PHPExtension existence and version is quite hard to do. Indeed, // it depends what the installed extensions are on the computers running the tests. // Thus, I decided to use the DOM extension as a test. I've never seen a PHP installation // without the DOM extension. It comes built-in except if you compile PHP with the // --disable-dom directive. // core tests. $ext = new common_configuration_PHPExtension(null, null, 'dom'); $this->assertEquals($ext->getMin(), null); $this->assertEquals($ext->getMax(), null); $this->assertEquals($ext->getName(), 'dom'); $this->assertEquals($ext->isOptional(), false); $ext->setMin('1.0'); $this->assertEquals($ext->getMin(), '1.0'); $ext->setMax('2.0'); $this->assertEquals($ext->getMax(), '2.0'); $ext->setName('foobar'); $this->assertEquals($ext->getName(), 'foobar'); // test with an extension that has no version information (hash) that // contains hash functions such as md5(). // We consider that if there is no version information but the extension // is loaded, the report is always valid even if min and/or max version(s) // are specified. $ext = new common_configuration_PHPExtension(null, null, 'hash'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); $ext->setMin('1.0'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); $ext->setMax('2.0'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); $ext->setMin(null); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); // test with the dom extension that has version information. $ext = new common_configuration_PHPExtension('19851127', '20090601', 'dom'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); $ext->setMin('20050112'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::INVALID); $ext->setMin(null); $ext->setMax('20020423'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::INVALID); $ext->setMin('20010731'); $ext->setMax(null); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::VALID); // Unexisting extension. $ext = new common_configuration_PHPExtension('1.0', '1.4', 'foobar'); $report = $ext->check(); $this->assertEquals($report->getStatus(), common_configuration_Report::UNKNOWN); }