<?php
namespace eMapper\Reflection;
use eMapper\Reflection\Parameter\ParameterWrapper;
use Acme\Reflection\Parameter\ExampleUser;
use Acme\Reflection\Parameter\UserEntity;
/**
* Tests building a parameter wrapper for various types of values
*
* @author emaphp
* @group reflection
*/
class ParameterMapTest extends \PHPUnit_Framework_TestCase {
public function testArray() {
$value = ['name' => 'joe', 'lastname' => 'doe'];
$wrapper = ParameterWrapper::wrapValue($value);
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['lastname']);
$vars = $wrapper->getValueAsArray();
$this->assertInternalType('array', $vars);
$this->assertArrayHasKey('name', $vars);
$this->assertArrayHasKey('lastname', $vars);
$this->assertEquals('joe', $vars['name']);
$this->assertEquals('doe', $vars['lastname']);
}
public function testArrayParameterMap() {
$value = ['name' => 'joe', 'lastname' => 'doe'];
$wrapper = ParameterWrapper::wrapValue($value, 'Acme\Reflection\Parameter\UserArrayParameterMap');
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('surname'));
$this->assertFalse($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['surname']);
}
public function testArrayObject() {
$value = new \ArrayObject(['name' => 'joe', 'lastname' => 'doe']);
$wrapper = ParameterWrapper::wrapValue($value);
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['lastname']);
$vars = $wrapper->getValueAsArray();
$this->assertInternalType('array', $vars);
$this->assertArrayHasKey('name', $vars);
$this->assertArrayHasKey('lastname', $vars);
$this->assertEquals('joe', $vars['name']);
$this->assertEquals('doe', $vars['lastname']);
}
public function testArrayObjectParameterMap() {
$value = new \ArrayObject(['name' => 'joe', 'lastname' => 'doe']);
$wrapper = ParameterWrapper::wrapValue($value, 'Acme\Reflection\Parameter\UserArrayParameterMap');
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('surname'));
$this->assertFalse($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['surname']);
}
public function testStdClass() {
$value = new \stdClass();
$value->name = 'joe';
$value->lastname = 'doe';
$wrapper = ParameterWrapper::wrapValue($value);
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['lastname']);
$vars = $wrapper->getValueAsArray();
$this->assertInternalType('array', $vars);
$this->assertArrayHasKey('name', $vars);
$this->assertArrayHasKey('lastname', $vars);
$this->assertEquals('joe', $vars['name']);
$this->assertEquals('doe', $vars['lastname']);
}
public function testStdClassParameterMap() {
$value = new \stdClass();
$value->name = 'joe';
$value->lastname = 'doe';
$wrapper = ParameterWrapper::wrapValue($value, 'Acme\Reflection\Parameter\UserArrayParameterMap');
$this->assertInstanceOf('eMapper\Reflection\Parameter\ArrayParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('surname'));
$this->assertFalse($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['surname']);
}
public function testObject() {
$value = new ExampleUser('joe', 'doe', '123456');
$wrapper = ParameterWrapper::wrapValue($value);
$this->assertInstanceOf('eMapper\Reflection\Parameter\ObjectParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('lastname'));
$this->assertTrue($wrapper->offsetExists('password'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['lastname']);
$vars = $wrapper->getValueAsArray();
$this->assertInternalType('array', $vars);
$this->assertArrayHasKey('name', $vars);
$this->assertArrayHasKey('lastname', $vars);
$this->assertEquals('joe', $vars['name']);
$this->assertEquals('doe', $vars['lastname']);
}
public function testObjectParameterMap() {
$value = new ExampleUser('joe', 'doe', '123456');
$wrapper = ParameterWrapper::wrapValue($value, 'Acme\Reflection\Parameter\ExampleUserPameterMap');
$this->assertInstanceOf('eMapper\Reflection\Parameter\ObjectParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('surname'));
$this->assertTrue($wrapper->offsetExists('pass'));
$this->assertFalse($wrapper->offsetExists('lastname'));
$this->assertFalse($wrapper->offsetExists('password'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['surname']);
$this->assertEquals('123456', $wrapper['pass']);
}
public function testEntity() {
$value = new UserEntity();
$value->name = 'joe';
$value->surname = 'doe';
$value->setPassword('123456');
$wrapper = ParameterWrapper::wrapValue($value);
$this->assertInstanceOf('eMapper\Reflection\Parameter\ObjectParameterWrapper', $wrapper);
$this->assertTrue($wrapper->offsetExists('name'));
$this->assertTrue($wrapper->offsetExists('surname'));
$this->assertTrue($wrapper->offsetExists('password'));
$this->assertFalse($wrapper->offsetExists('lastname'));
$this->assertEquals('joe', $wrapper['name']);
$this->assertEquals('doe', $wrapper['surname']);
$this->assertEquals('123456', $wrapper['password']);
}
}
?>
|