Newer
Older
<?php
/**
* Class OperationManufacturerTest
*
* Date: 26.03.13
* Time: 12:30
* @author Thomas Joußen <tjoussen@databay.de>
*/
class OperationManufacturerTest extends PHPUnit_Framework_TestCase
{
/**
* @var OperationManufacturer
*/
protected $manufacturer;
/**
* @var string
*/
protected $expected_pattern = '/[&\|<>=]+/';
public function setUp()
{
include_once __DIR__ . '/../../classes/Factory/OperationManufacturer.php';
$this->reflection = new ReflectionClass("OperationManufacturer");
$this->manufacturer = OperationManufacturer::_getInstance();
}
public function test_NotConstructable()
{
$this->assertFalse($this->reflection->isInstantiable());
$method = $this->reflection->getMethod("__construct");
$this->assertTrue($method->isPrivate());
}
public function test_NotCloneable()
{
$this->assertFalse($this->reflection->isCloneable());
$method = $this->reflection->getMethod("__clone");
$this->assertTrue($method->isPrivate());
}
public function test_Singleton()
{
$this->assertNotNull($this->manufacturer);
$this->assertEquals($this->manufacturer, OperationManufacturer::_getInstance());
}
public function test_GetPattern()
{
$this->assertEquals($this->expected_pattern, $this->manufacturer->getPattern());
}
public function test_MatchPattern()
{
$subject = '< = > & | <> <= >=';
$matches = $this->manufacturer->match($subject);
$tokens = \explode(" ", $subject);
foreach ($tokens as $token) {
$this->assertContains($token, $matches);
}
}
public function test_SupportedOperations()
{
$operations = array(
"<" => 'LesserOperation',
"<=" => "LesserOrEqualsOperation",
"=" => "EqualsOperation",
">=" => "GreaterOrEqualsOperation",
">" => "GreaterOperation",
"<>" => "NotEqualsOperation",
"&" => "AndOperation",
"|" => "OrOperation"
);
foreach ($operations as $key => $operation) {
include_once __DIR__ . "/../../classes/Operations/" . $operation . ".php";
$operation_object = $this->manufacturer->manufacture($key);
$this->assertInstanceOf($operation, $operation_object);
}
}
/**
* @expectedException UnsupportedOperation
*/
public function test_UnsupportedOperation()
{
$this->manufacturer->manufacture("==");
}