| 
<?phpnamespace 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']);
 }
 }
 ?>
 |