/** * Builds a Result from a DOM-Object * * @param DOMDocument $document * @return Robo47_DirectoryHasher_Result */ public function buildResultFromDOM(DOMDocument $document) { $result = new Robo47_DirectoryHasher_Result(); $xpath = new DOMXPath($document); $entries = $xpath->query('//files/file'); foreach ($entries as $entry) { $filenameAttr = $entry->attributes->getNamedItem('name'); if ($filenameAttr !== null) { $fileResult = new Robo47_DirectoryHasher_Result_File($filenameAttr->value); foreach ($this->getHashesFromFileNode($entry) as $name => $value) { $fileResult->addHash($name, $value); } $result->addFileResult($fileResult); } } return $result; }
/** * Compares two Results * * @param Robo47_DirectoryHasher_Result $old * @param Robo47_DirectoryHasher_Result $new * @return Robo47_DirectoryHasher_Comparator_Result */ public function compare(Robo47_DirectoryHasher_Result $old, Robo47_DirectoryHasher_Result $new) { $result = new Robo47_DirectoryHasher_Comparator_Result(); foreach ($old->getIterator() as $fileResult) { /* @var $fileResult Robo47_DirectoryHasher_Result_File */ if (!$new->hasFileResultFor($fileResult->getFilename())) { $result->addDifference(new Robo47_DirectoryHasher_Comparator_Difference_MissingFile($fileResult->getFilename())); } else { $result->addDifferences($this->getHashDifferences($fileResult, $new->getFileResultFor($fileResult->getFilename()))); } } foreach ($new->getIterator() as $fileResult) { /* @var $fileResult Robo47_DirectoryHasher_Result_File */ if (!$old->hasFileResultFor($fileResult->getFilename())) { $result->addDifference(new Robo47_DirectoryHasher_Comparator_Difference_NewFile($fileResult->getFilename())); } } return $result; }
/** * {@inheritdoc} */ public function getFileResults() { $this->loadSources(); return $this->result->getIterator()->getArrayCopy(); }
/** * Fetches files from source * * @return Robo47_DirectoryHasher_Result */ public function run() { $this->result->addFileResults($this->source->getFileResults()); $this->hasher->addHashsToResult($this->result); }
/** * @covers Robo47_DirectoryHasher_Result::getFileResultFor */ public function testGetFileResultFor() { $result = new Robo47_DirectoryHasher_Result(array($file = new Robo47_DirectoryHasher_Result_File('/baa/foo.php'))); $this->assertSame($file, $result->getFileResultFor('/baa/foo.php')); $this->assertNull($result->getFileResultFor('/baa/blub.php')); }