/**
  * 
  * @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');
         }
     }
 }