public function testDecodeEncoded()
 {
     // create two resource
     $res1 = imagecreatetruecolor(20, 15);
     imagefill($res1, 0, 0, 850736919);
     $res2 = imagecreatetruecolor(20, 15);
     imagefill($res1, 0, 0, 11876119);
     // create encoded
     $encoder = new Encoder();
     $encoder->setCanvas(20, 15);
     $encoder->setLoops(2);
     $encoder->createFrameFromGdResource($res1, 100);
     $encoder->createFrameFromGdResource($res2, 100);
     $encoded = $encoder->encode();
     // decode encoded
     $decoder = new Decoder();
     $decoder->initFromData($encoded);
     $decoded = $decoder->decode();
     // check after decoding
     $this->assertEquals(20, $decoded->getCanvasWidth());
     $this->assertEquals(15, $decoded->getCanvasHeight());
     $this->assertEquals(2, $decoded->countFrames());
     $this->assertEquals(2, $decoded->getLoops());
     $this->assertEquals(32, $decoded->countGlobalColors());
     $this->assertFalse($decoded->hasGlobalColorTable());
     foreach ($decoded->getFrames() as $frame) {
         $this->assertEquals(100, $frame->getDelay());
     }
 }
 public function testCreateFrameFromGdResource()
 {
     $encoder = new Encoder();
     $resource = imagecreate(10, 10);
     $encoder->createFrameFromGdResource($resource, 10);
     $this->assertEquals(1, count($encoder->frames));
 }