PHP Classes

File: tests/eMapper/SQLite/Mapper/ScalarMapper/CustomTypeTest.php

Recommend this page to a friend!
  Classes of Emmanuel Antico   eMapper   tests/eMapper/SQLite/Mapper/ScalarMapper/CustomTypeTest.php   Download  
File: tests/eMapper/SQLite/Mapper/ScalarMapper/CustomTypeTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: eMapper
Database abstraction layer that maps data types
Author: By
Last change:
Date: 10 years ago
Size: 3,641 bytes
 

Contents

Class file image Download
<?php
namespace eMapper\SQLite\Mapper\ScalarMapper;

use
eMapper\SQLite\SQLiteTest;
use
Acme\Type\RGBColorTypeHandler;
use
eMapper\Engine\SQLite\SQLiteDriver;
use
eMapper\Mapper;

/**
 * Test MySQLMapper with a custom type handler
 * @author emaphp
 * @group sqlite
 * @group mapper
 * @group custom
 */
class CustomTypeTest extends SQLiteTest {
    public
$xmapper;
   
    public function
__construct() {
       
parent::__construct();
   
       
$driver = new SQLiteDriver(new \SQLite3(self::$filename));
       
$this->xmapper = new Mapper($driver);
       
$this->xmapper->addType('Acme\RGBColor', new RGBColorTypeHandler(), 'color');
    }
   
    public function
testCustomType() {
       
$value = $this->xmapper->type('Acme\RGBColor')->query("SELECT 'FF00ff'");
       
$this->assertInstanceOf('Acme\RGBColor', $value);
       
$this->assertEquals(255, $value->red);
       
$this->assertEquals(0, $value->green);
       
$this->assertEquals(255, $value->blue);
   
       
$value = $this->xmapper->type('color')->query("SELECT color FROM products WHERE product_id = 1");
       
$this->assertInstanceOf('Acme\RGBColor', $value);
       
$this->assertEquals(225, $value->red);
       
$this->assertEquals(26, $value->green);
       
$this->assertEquals(26, $value->blue);
    }
   
    public function
testCustomTypeColumn() {
       
$value = $this->xmapper->type('Acme\RGBColor', 'color')->query("SELECT * FROM products WHERE product_id = 1");
   
       
$this->assertInstanceOf('Acme\RGBColor', $value);
       
$this->assertEquals(225, $value->red);
       
$this->assertEquals(26, $value->green);
       
$this->assertEquals(26, $value->blue);
    }
   
    public function
testCustomTypeList() {
       
$values = $this->xmapper->type('Acme\RGBColor[]')->query("SELECT color FROM products ORDER BY product_id ASC");
   
       
$this->assertInternalType('array', $values);
       
$this->assertCount(5, $values);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[0]);
       
$this->assertEquals(225, $values[0]->red);
       
$this->assertEquals(26, $values[0]->green);
       
$this->assertEquals(26, $values[0]->blue);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[1]);
       
$this->assertEquals(12, $values[1]->red);
       
$this->assertEquals(27, $values[1]->green);
       
$this->assertEquals(217, $values[1]->blue);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[2]);
       
$this->assertEquals(112, $values[2]->red);
       
$this->assertEquals(124, $values[2]->green);
       
$this->assertEquals(4, $values[2]->blue);
   
       
$this->assertNull($values[3]);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[4]);
       
$this->assertEquals(0, $values[4]->red);
       
$this->assertEquals(167, $values[4]->green);
       
$this->assertEquals(235, $values[4]->blue);
    }
   
    public function
testCustomTypeColumnList() {
       
$values = $this->xmapper->type('Acme\RGBColor[]', 'color')->query("SELECT * FROM products ORDER BY product_id ASC");
   
       
$this->assertInternalType('array', $values);
       
$this->assertCount(5, $values);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[0]);
       
$this->assertEquals(225, $values[0]->red);
       
$this->assertEquals(26, $values[0]->green);
       
$this->assertEquals(26, $values[0]->blue);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[1]);
       
$this->assertEquals(12, $values[1]->red);
       
$this->assertEquals(27, $values[1]->green);
       
$this->assertEquals(217, $values[1]->blue);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[2]);
       
$this->assertEquals(112, $values[2]->red);
       
$this->assertEquals(124, $values[2]->green);
       
$this->assertEquals(4, $values[2]->blue);
   
       
$this->assertNull($values[3]);
   
       
$this->assertInstanceOf('Acme\RGBColor', $values[4]);
       
$this->assertEquals(0, $values[4]->red);
       
$this->assertEquals(167, $values[4]->green);
       
$this->assertEquals(235, $values[4]->blue);
    }
}

?>