cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/Memory/MovableTest.php
Markus Warg 8398c9048d initially import ZendFramework-1.9.5 into repository
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
2010-03-31 10:12:32 +02:00

186 lines
5.4 KiB
PHP

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Memory
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: MovableTest.php 17363 2009-08-03 07:40:18Z bkarwin $
*/
/**
* Test helper
*/
require_once dirname(__FILE__) . '/../../TestHelper.php';
/** Zend_Memory */
require_once 'Zend/Memory.php';
/**
* Memory value container
*
* (Should be presented for value object)
*
* @category Zend
* @package Zend_Memory
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Memory_Manager_Dummy extends Zend_Memory_Manager
{
/** @var boolean */
public $processUpdatePassed = false;
/** @var integer */
public $processedId;
/** @var Zend_Memory_Container_Movable */
public $processedObject;
/**
* Dummy object constructor
*/
public function __construct()
{
// Do nothing
}
/**
* Dummy value update callback method
*/
public function processUpdate(Zend_Memory_Container_Movable $container, $id)
{
$this->processUpdatePassed = true;
$this->processedId = $id;
$this->processedObject = $container;
}
}
/**
* @category Zend
* @package Zend_Memory
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @group Zend_Memory
*/
class Zend_Memory_Container_MovableTest extends PHPUnit_Framework_TestCase
{
/**
* tests the Movable memory container object creation
*/
public function testCreation()
{
$memoryManager = new Zend_Memory_Manager_Dummy();
$memObject = new Zend_Memory_Container_Movable($memoryManager, 10, '0123456789');
$this->assertTrue($memObject instanceof Zend_Memory_Container_Movable);
}
/**
* tests the value access methods
*/
public function testValueAccess()
{
$memoryManager = new Zend_Memory_Manager_Dummy();
$memObject = new Zend_Memory_Container_Movable($memoryManager, 10, '0123456789');
// getRef() method
$this->assertEquals($memObject->getRef(), '0123456789');
$valueRef = &$memObject->getRef();
$valueRef[3] = '_';
$this->assertEquals($memObject->getRef(), '012_456789');
if (version_compare(PHP_VERSION, '5.2') < 0) {
// Skip next tests for PHP versions before 5.2
return;
}
// value property
$this->assertEquals((string)$memObject->value, '012_456789');
$memObject->value[7] = '_';
$this->assertEquals((string)$memObject->value, '012_456_89');
$memObject->value = 'another value';
$this->assertTrue($memObject->value instanceof Zend_Memory_Value);
$this->assertEquals((string)$memObject->value, 'another value');
}
/**
* tests lock()/unlock()/isLocked() functions
*/
public function testLock()
{
$memoryManager = new Zend_Memory_Manager_Dummy();
$memObject = new Zend_Memory_Container_Movable($memoryManager, 10, '0123456789');
$this->assertFalse((boolean)$memObject->isLocked());
$memObject->lock();
$this->assertTrue((boolean)$memObject->isLocked());
$memObject->unlock();
$this->assertFalse((boolean)$memObject->isLocked());
}
/**
* tests the touch() method
*/
public function testTouch()
{
$memoryManager = new Zend_Memory_Manager_Dummy();
$memObject = new Zend_Memory_Container_Movable($memoryManager, 10, '0123456789');
$this->assertFalse($memoryManager->processUpdatePassed);
$memObject->touch();
$this->assertTrue($memoryManager->processUpdatePassed);
$this->assertTrue($memoryManager->processedObject === $memObject);
$this->assertEquals($memoryManager->processedId, 10);
}
/**
* tests the value update tracing
*/
public function testValueUpdateTracing()
{
if (version_compare(PHP_VERSION, '5.2') < 0) {
// Skip next tests for PHP versions before 5.2
return;
}
$memoryManager = new Zend_Memory_Manager_Dummy();
$memObject = new Zend_Memory_Container_Movable($memoryManager, 10, '0123456789');
// startTrace() method is usually invoked by memory manager, when it need to be notified
// about value update
$memObject->startTrace();
$this->assertFalse($memoryManager->processUpdatePassed);
$memObject->value[6] = '_';
$this->assertTrue($memoryManager->processUpdatePassed);
$this->assertTrue($memoryManager->processedObject === $memObject);
$this->assertEquals($memoryManager->processedId, 10);
}
}