115 lines
3.7 KiB
PHP
115 lines
3.7 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; under version 2
|
||
|
* of the License (non-upgradable).
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*
|
||
|
* Copyright (c) 2013 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
namespace oat\taoQtiItem\test\integration;
|
||
|
|
||
|
use \common_ext_ExtensionsManager;
|
||
|
use oat\tao\test\TaoPhpUnitTestRunner;
|
||
|
use oat\taoQtiItem\model\qti\Service;
|
||
|
use oat\taoQtiItem\model\qti\PackageParser;
|
||
|
use oat\taoQtiItem\model\qti\ManifestParser;
|
||
|
|
||
|
include_once dirname(__FILE__) . '/../../includes/raw_start.php';
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Bertrand Chevrier, <taosupport@tudor.lu>
|
||
|
* @package taoQTI
|
||
|
|
||
|
*/
|
||
|
class QtiPackageParsingTest extends TaoPhpUnitTestRunner
|
||
|
{
|
||
|
|
||
|
protected $qtiService;
|
||
|
|
||
|
/**
|
||
|
* tests initialization
|
||
|
*/
|
||
|
public function setUp(): void
|
||
|
{
|
||
|
TaoPhpUnitTestRunner::initTest();
|
||
|
$this->qtiService = Service::singleton();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* test qti file parsing: validation and loading in a non-persistant context
|
||
|
*/
|
||
|
public function testFileParsing()
|
||
|
{
|
||
|
|
||
|
//check if wrong packages are not validated correctly
|
||
|
foreach (glob(dirname(__FILE__) . '/samples/parser/wrong/*.zip') as $file) {
|
||
|
$qtiParser = new PackageParser($file);
|
||
|
|
||
|
$qtiParser->validate();
|
||
|
|
||
|
$this->assertFalse($qtiParser->isValid(), 'failed with: ' . $file);
|
||
|
$this->assertTrue(count($qtiParser->getErrors()) > 0);
|
||
|
$this->assertTrue(strlen($qtiParser->displayErrors()) > 0);
|
||
|
}
|
||
|
|
||
|
//check if package samples are valid
|
||
|
foreach (glob(dirname(__FILE__) . '/samples/package/QTI/*.zip') as $file) {
|
||
|
$qtiParser = new PackageParser($file);
|
||
|
$qtiParser->validate();
|
||
|
|
||
|
if (!$qtiParser->isValid()) {
|
||
|
echo $qtiParser->displayErrors();
|
||
|
}
|
||
|
|
||
|
$this->assertTrue($qtiParser->isValid());
|
||
|
}
|
||
|
|
||
|
|
||
|
//check if wrong manifest files are not validated correctly
|
||
|
foreach (glob(dirname(__FILE__) . '/samples/package/wrong/*.xml') as $file) {
|
||
|
$qtiParser = new ManifestParser($file);
|
||
|
|
||
|
$qtiParser->validate();
|
||
|
|
||
|
$this->assertFalse($qtiParser->isValid());
|
||
|
$this->assertTrue(count($qtiParser->getErrors()) > 0);
|
||
|
$this->assertTrue(strlen($qtiParser->displayErrors()) > 0);
|
||
|
}
|
||
|
|
||
|
//check if manifest samples are valid
|
||
|
$basePath = common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiItem')->getDir();
|
||
|
foreach (glob(dirname(__FILE__) . '/samples/package/*.xml') as $file) {
|
||
|
$qtiParser = new ManifestParser($file);
|
||
|
|
||
|
$schema = '';
|
||
|
$fileContent = file_get_contents($file);
|
||
|
if (strpos($fileContent, 'xmlns="http://www.imsglobal.org/xsd/apip/apipv1p0/imscp_v1p1"')) {
|
||
|
$schema = $basePath . 'model/qti/data/apipv1p0/Core_Level/Package/apipv1p0_imscpv1p2_v1p0.xsd';
|
||
|
}
|
||
|
|
||
|
$qtiParser->validate($schema);
|
||
|
|
||
|
if (!$qtiParser->isValid()) {
|
||
|
echo $qtiParser->displayErrors();
|
||
|
}
|
||
|
|
||
|
$this->assertTrue($qtiParser->isValid());
|
||
|
}
|
||
|
}
|
||
|
}
|