/** * * @param array $schemaArray * @param string $elementId * @return array */ public static function changeListValues($schemaArray) { $indexArr = array(); foreach ($schemaArray as $index => $schemaElement) { if ($schemaElement instanceof MetadataListField) { $indexArr[] = $index; } } if (!count($indexArr)) { return $schemaArray; } $indexToChange = $indexArr[rand(0, count($indexArr) - 1)]; $elementToChange = $schemaArray[$indexToChange]; /* @var $elementToChange MetadataListField */ $option = rand(0, 2); switch ($option) { case 0: $randIndex = rand(0, count($elementToChange->valueList) - 1); array_splice($elementToChange->valueList, $randIndex, 0, uniqid('res_')); echo " Adding list value fieldIdx={$indexToChange} fieldId={$elementToChange->id} valIdx={$randIndex}\n"; break; case 1: $randIndex = rand(0, count($elementToChange->valueList) - 1); array_splice($elementToChange->valueList, $randIndex, 1); echo " Removing list value fieldIdx={$indexToChange} fieldId={$elementToChange->id} valIdx={$randIndex}\n"; self::$shouldTransform = true; break; case 2: $elementToChange->valueList = Config::getNewListVals(); echo " Replacing list values fieldIdx={$indexToChange} fieldId={$elementToChange->id}\n"; self::$shouldTransform = true; break; } return $schemaArray; }
private function metadataTransformed() { file_put_contents("source.xsd", $this->schema); file_put_contents("target.xsd", $this->transSchema); file_put_contents("source.xml", $this->testXML); $xsl = XSDEditor::compareXsd($this->schema, $this->transSchema); file_put_contents("transform.xsl", $xsl); if (!is_bool($xsl)) { $this->assertTrue(XSDEditor::$shouldTransform, 'transform was done unnecessarily'); $transXML = XSDEditor::transformXmlData($this->testXML, $xsl); file_put_contents("transform.xml", $transXML); $domXML = new DOMDocument(); $domXML->loadXML($transXML); try { $result = $domXML->schemaValidateSource($this->transSchema); } catch (Exception $e) { $this->assertTrue(false, $e->getMessage()); } if (!$result) { $this->assertTrue(false, 'failed to validate XML'); } } else { $domXML = new DOMDocument(); $domXML->loadXML($this->testXML); //Claiming that existing XML does not require change, validate against new schema.... if (!$domXML->schemaValidateSource($this->transSchema)) { $this->assertTrue(false, 'failed to validate XML'); } } }