HEX
Server: Apache/2.4.62 (Unix) OpenSSL/1.1.1k
System: Linux ns565604.ip-54-39-133.net 4.18.0-553.50.1.el8_10.x86_64 #1 SMP Tue Apr 15 08:09:22 EDT 2025 x86_64
User: greer489 (1034)
PHP: 8.3.19
Disabled: NONE
Upload Files
File: //usr/local/src/imagick/tests/292_index_iterator.phpt
--TEST--
Test iterating over images works
--SKIPIF--
<?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
--FILE--
<?php

$canvasTypes = [
    "radial-gradient:red-blue",
    "gradient:black-fuchsia",
    "plasma:tomato-steelblue",
];

$canvas = new Imagick();


foreach ($canvasTypes as $canvasType) {
    $imagick = new Imagick();
    $imagick->newPseudoImage(300, 300, $canvasType);
    $canvas->addImage($imagick);
}

$canvas->setImageFormat("png");

foreach ($canvas as $canvasSubImage) {
    echo $canvas->getIteratorIndex() . "\n";
    echo $canvas->getImageIndex() . "\n";
}

for ($i=0; $i<3; $i+=1) {
    $canvas->setImageIndex($i);
    echo $canvas->getIteratorIndex() . "\n";
}
for ($i=0; $i<3; $i+=1) {
    $canvas->setIteratorIndex($i);
    echo $canvas->getImageIndex() . "\n";
}

$canvas->setImageIndex(-1);
if ($canvas->getImageIndex() !== 2) {
    echo "Setting image index to -1 did something unexpected. Or at least is a BC break.\n";
}
else {
    echo "still " . $canvas->getImageIndex() . " as hasn't changed\n";
}

try {
    $canvas->setImageIndex(3);
}
catch (ImagickException $ie) {
    echo "Exception: ". $ie->getMessage() . "\n";
}

echo "Ok";
?>
--EXPECTF--
0
0
1
1
2
2
0
1
2
0
1
2
still 2 as hasn't changed
Exception: Unable to set image index
Ok