Exemple #1
0
function ifdToTest($name, $number, PelIfd $ifd)
{
    println();
    println('/* Start of IDF %s%d. */', $name, $number);
    $entries = $ifd->getEntries();
    println('$this->assertEqual(count(%s%d->getEntries()), %d);', $name, $number, count($entries));
    foreach ($entries as $tag => $entry) {
        println();
        println('$entry = %s%d->getEntry(%d); // %s', $name, $number, $tag, PelTag::getName($ifd->getType(), $tag));
        entryToTest('$entry', $entry);
    }
    println();
    println('/* Sub IFDs of %s%d. */', $name, $number);
    $sub_ifds = $ifd->getSubIfds();
    println('$this->assertEqual(count(%s%d->getSubIfds()), %d);', $name, $number, count($sub_ifds));
    $n = 0;
    $sub_name = $name . $number . '_';
    foreach ($sub_ifds as $type => $sub_ifd) {
        println('%s%d = %s%d->getSubIfd(%d); // IFD %s', $sub_name, $n, $name, $number, $type, $sub_ifd->getName());
        println('$this->assertIsA(%s%d, \'PelIfd\');', $sub_name, $n);
        ifdToTest($sub_name, $n, $sub_ifd);
        $n++;
    }
    println();
    if (strlen($ifd->getThumbnailData()) > 0) {
        println('$thumb_data = file_get_contents(dirname(__FILE__) .');
        println('                                \'/%s\');', $GLOBALS['thumb_filename']);
        println('$this->assertEqual(%s%d->getThumbnailData(), $thumb_data);', $name, $number);
    } else {
        println('$this->assertEqual(%s%d->getThumbnailData(), \'\');', $name, $number);
    }
    println();
    println('/* Next IFD. */');
    $next = $ifd->getNextIfd();
    println('%s%d = %s%d->getNextIfd();', $name, $number + 1, $name, $number);
    if ($next instanceof PelIfd) {
        println('$this->assertIsA(%s%d, \'PelIfd\');', $name, $number + 1);
        println('/* End of IFD %s%d. */', $name, $number);
        ifdToTest($name, $number + 1, $next);
    } else {
        println('$this->assertNull(%s%d);', $name, $number + 1);
        println('/* End of IFD %s%d. */', $name, $number);
    }
}
Exemple #2
0
 /**
  * Set the first IFD.
  *
  * @param PelIfd $ifd
  *            the new first IFD, which must be of type {@link
  *            PelIfd::IFD0}.
  */
 public function setIfd(PelIfd $ifd)
 {
     if ($ifd->getType() != PelIfd::IFD0) {
         throw new PelInvalidDataException('Invalid type of IFD: %d, expected %d.', $ifd->getType(), PelIfd::IFD0);
     }
     $this->ifd = $ifd;
 }