PHP Classes
elePHPant
Icontem

File: test/regular/ColorTableTest.php

Recommend this page to a friend!
  Classes of Patrick Van Bergen  >  Move Me GIF  >  test/regular/ColorTableTest.php  >  Download  
File: test/regular/ColorTableTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Move Me GIF
Create animated GIF images in pure PHP
Author: By
Last change: Use imagegif to create compressed pixel data if possible, which is much faster.
Date: 3 years ago
Size: 3,450 bytes
 

Contents

Class file image Download
<?php
use movemegif\data\Formatter;
use
movemegif\domain\StringCanvas;
use
movemegif\GifBuilder;

require_once
__DIR__ . '/../../php/autoloader.php';

/**
 * Tests global color table shared by two frames.
 * Tests local color tables.
 * Tests a color table with more than 4 (8) entries.
 * Tests duration.
 * Integration test that builds complete GIF.
 *
 * @author Patrick van Bergen
 */
class ColorTableTest extends PHPUnit_Framework_TestCase
{
    public function
testGlobalColorTable()
    {
       
$indexString = "
            1 1 2 2
            1 3 3 2
            2 3 3 1
            2 2 1 1
        "
;

       
$index2color = array(
           
'1' => 0xFF0000,
           
'2' => 0xFFFFFF,
           
'3' => 0x000000,
        );

       
$builder = new GifBuilder(4, 4);

       
$builder->addFrame()
            ->
setCanvas(new StringCanvas(4, 4, $indexString, $index2color))
            ->
setUseGlobalColorTable()
            ->
setDuration(50);

       
$indexString = "
            4 4 5 5
            4 3 3 5
            5 3 3 4
            5 5 4 4
        "
;

       
$index2color = array(
           
'3' => 0x000000,
           
'4' => 0x0000FF,
           
'5' => 0x808080,
        );

       
$builder->addFrame()
            ->
setCanvas(new StringCanvas(4, 4, $indexString, $index2color))
            ->
setUseGlobalColorTable()
            ->
setDuration(50);

       
$contents = $builder->getContents();

       
$actual = Formatter::byteString2hexString($contents);
       
$expected = "47 49 46 38 39 61 04 00 04 00 92 00 00 FF 00 00 FF FF FF 00 00 00 00 00 FF 80 80 80 00 00 00 00 00 00 00 00 00 21 F9 04 00 32 00 00 00 2C 00 00 00 00 04 00 04 00 00 02 07 04 12 20 82 7B 09 0A 00 21 F9 04 00 32 00 00 00 2C 00 00 00 00 04 00 04 00 00 03 08 38 43 34 22 EC AD 36 12 00 21 FE 16 43 72 65 61 74 65 64 20 77 69 74 68 20 6D 6F 76 65 6D 65 67 69 66 00 3B";

       
$this->assertEquals($expected, $actual);
    }

    public function
testLocalColorTables()
    {
       
$indexString = "
            1 1 2 2
            1 3 3 2
            2 3 3 1
            2 2 1 1
        "
;

       
$index2color = array(
           
'1' => 0xFF0000,
           
'2' => 0xFFFFFF,
           
'3' => 0x000000,
        );

       
$builder = new GifBuilder(4, 4);

       
$builder->addFrame()
            ->
setCanvas(new StringCanvas(4, 4, $indexString, $index2color))
            ->
setUseLocalColorTable()
            ->
setDuration(50);

       
$indexString = "
            4 4 5 5
            4 3 3 5
            5 3 3 4
            5 5 4 4
        "
;

       
$index2color = array(
           
'3' => 0x000000,
           
'4' => 0x0000FF,
           
'5' => 0x808080,
        );

       
$builder->addFrame()
            ->
setCanvas(new StringCanvas(4, 4, $indexString, $index2color))
            ->
setUseLocalColorTable()
            ->
setDuration(50);

       
$contents = $builder->getContents();

       
$actual = Formatter::byteString2hexString($contents);
       
$expected = "47 49 46 38 39 61 04 00 04 00 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 F9 04 00 32 00 00 00 2C 00 00 00 00 04 00 04 00 81 FF 00 00 FF FF FF 00 00 00 00 00 00 02 07 04 12 20 82 7B 09 0A 00 21 F9 04 00 32 00 00 00 2C 00 00 00 00 04 00 04 00 81 00 00 FF 80 80 80 00 00 00 00 00 00 02 07 04 12 20 82 7B 09 0A 00 21 FE 16 43 72 65 61 74 65 64 20 77 69 74 68 20 6D 6F 76 65 6D 65 67 69 66 00 3B";

       
$this->assertEquals($expected, $actual);
    }
}