/** * test qti file parsing: validation and loading in a non-persistant context * @dataProvider QtiFileProvider */ public function testParsingQti($file, $valid) { $qtiParser = new Parser($file); $qtiParser->validate(); if ($valid) { $this->assertEquals(array(), $qtiParser->getErrors()); $this->assertTrue($qtiParser->isValid()); $item = $qtiParser->load(); $this->assertInstanceOf('\\oat\\taoQtiItem\\model\\qti\\Item', $item); } else { $this->assertFalse($qtiParser->isValid()); $this->assertTrue(count($qtiParser->getErrors()) > 0); $this->assertTrue(strlen($qtiParser->displayErrors()) > 0); } }
/** * test qti file parsing: validation and loading in a non-persistant context */ public function testFileParsingQti2p1() { //check if wrong files are not validated correctly foreach (glob(dirname(__FILE__) . '/samples/wrong/*.*') as $file) { $qtiParser = new Parser($file); $qtiParser->validate(); $this->assertFalse($qtiParser->isValid()); $this->assertTrue(count($qtiParser->getErrors()) > 0); $this->assertTrue(strlen($qtiParser->displayErrors()) > 0); } $files = array_merge(glob(dirname(__FILE__) . '/samples/xml/qtiv2p1/*.xml'), glob(dirname(__FILE__) . '/samples/xml/qtiv2p1/rubricBlock/*.xml')); //check if samples are loaded foreach ($files as $file) { $qtiParser = new Parser($file); $qtiParser->validate(); if (!$qtiParser->isValid()) { echo $qtiParser->displayErrors(); } $this->assertTrue($qtiParser->isValid()); $item = $qtiParser->load(); $this->assertInstanceOf('\\oat\\taoQtiItem\\model\\qti\\Item', $item); } }
protected function createQtiItemModel($qtiFile, $validate = true) { $qtiXml = Authoring::sanitizeQtiXml($qtiFile); //validate the file to import $qtiParser = new Parser($qtiXml); if ($validate) { $basePath = common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiItem')->getDir(); $qtiParser->validate(); if (!$qtiParser->isValid()) { $failedValidation = true; $eStrs = array(); foreach ($qtiParser->getErrors() as $libXmlError) { $eStrs[] = __('QTI-XML error at line %1$d "%2$s".', $libXmlError['line'], str_replace('[LibXMLError] ', '', trim($libXmlError['message']))); } // Make sure there are no duplicate... $eStrs = array_unique($eStrs); // Add sub-report. throw new ValidationException($qtiFile, $eStrs); } } $qtiItem = $qtiParser->load(); return $qtiItem; }
protected function createQtiItemModel($qtiFile, $validate = true) { $qtiXml = Authoring::sanitizeQtiXml($qtiFile); //validate the file to import $qtiParser = new Parser($qtiXml); if ($validate) { $qtiParser->validate(); if (!$qtiParser->isValid()) { $eStrs = array(); foreach ($qtiParser->getErrors() as $libXmlError) { $eStrs[] = __('QTI-XML error at line %1$d "%2$s".', $libXmlError['line'], str_replace('[LibXMLError] ', '', trim($libXmlError['message']))); } // Make sure there are no duplicate... $eStrs = array_unique($eStrs); // Add sub-report. throw new ValidationException($qtiFile, $eStrs); } } $qtiItem = $qtiParser->load(); if (!$qtiItem && count($qtiParser->getErrors())) { $errors = []; foreach ($qtiParser->getErrors() as $error) { $errors[] = $error['message']; } throw new ValidationException($qtiFile, $errors); } return $qtiItem; }