<?php
namespace eMapper\Regex;
use eMapper\Mapper;
/**
* Tests parsing an object mapping expression
*
* @author emaphp
* @group regex
*/
class ObjectRegexTest extends \PHPUnit_Framework_TestCase {
const REGEX = Mapper::OBJECT_TYPE_REGEX;
public function testSimpleObject1() {
$expr = 'object';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(1, $matches);
$this->assertEquals('object', $matches[0]);
}
public function testSimpleObject2() {
$expr = 'obj';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(1, $matches);
$this->assertEquals('obj', $matches[0]);
}
public function testCustomObject1() {
$expr = 'object:User';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(2, $matches);
$this->assertEquals('User', $matches[1]);
}
public function testCustomObject2() {
$expr = 'obj:User';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(2, $matches);
$this->assertEquals('User', $matches[1]);
}
public function testCustomObject3() {
$expr = 'object:Acme\Entity\User';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(2, $matches);
$this->assertEquals('Acme\Entity\User', $matches[1]);
}
public function testCustomObject4() {
$expr = 'obj:Acme\Entity\User';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(2, $matches);
$this->assertEquals('Acme\Entity\User', $matches[1]);
}
public function testObjectList1() {
$expr = 'object[]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(5, $matches);
$this->assertEquals('[]', $matches[4]);
}
public function testObjectList2() {
$expr = 'obj[]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(5, $matches);
$this->assertEquals('[]', $matches[4]);
}
public function testObjectGroupedList1() {
$expr = 'object<category>';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(3, $matches);
$this->assertEquals('category', $matches[2]);
}
public function testObjectGroupedList2() {
$expr = 'obj<category>';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(3, $matches);
$this->assertEquals('category', $matches[2]);
}
public function testObjectGroupedList3() {
$expr = 'object<category:int>';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(4, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('int', $matches[3]);
}
public function testObjectGroupedList4() {
$expr = 'obj<category:int>';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(4, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('int', $matches[3]);
}
public function testObjectndexedList1() {
$expr = 'object[product_id]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(6, $matches);
$this->assertEquals('[product_id]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
}
public function testObjectIndexedList2() {
$expr = 'obj[product_id]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(6, $matches);
$this->assertEquals('[product_id]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
}
public function testObjectIndexedList3() {
$expr = 'object[product_id:int]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(7, $matches);
$this->assertEquals('[product_id:int]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
$this->assertEquals('int', $matches[6]);
}
public function testObjectIndexedList4() {
$expr = 'obj[product_id:int]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(7, $matches);
$this->assertEquals('[product_id:int]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
$this->assertEquals('int', $matches[6]);
}
public function testObjectGroupedIndexedList1() {
$expr = 'object<category>[product_id]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(6, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('[product_id]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
}
public function testObjectGroupedIndexedList2() {
$expr = 'obj<category:string>[product_id]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(6, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('string', $matches[3]);
$this->assertEquals('[product_id]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
}
public function testObjectGroupedIndexedList3() {
$expr = 'object<category>[product_id:int]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(7, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('[product_id:int]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
$this->assertEquals('int', $matches[6]);
}
public function testObjectGroupedIndexedList4() {
$expr = 'obj<category:string>[product_id:int]';
$result = preg_match(self::REGEX, $expr, $matches);
$this->assertEquals(1, $result);
$this->assertCount(7, $matches);
$this->assertEquals('category', $matches[2]);
$this->assertEquals('string', $matches[3]);
$this->assertEquals('[product_id:int]', $matches[4]);
$this->assertEquals('product_id', $matches[5]);
$this->assertEquals('int', $matches[6]);
}
}
?>
|