diff options
| author | godzilla80@gmx.net <> | 2009-05-01 08:30:05 +0000 | 
|---|---|---|
| committer | godzilla80@gmx.net <> | 2009-05-01 08:30:05 +0000 | 
| commit | c6904380ac34536c0f3d65d3c92deaa9fa532f4a (patch) | |
| tree | 7183cfc195539b55942abd77c3422025a880b865 /tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php | |
| parent | c5b32bfae9b60b59e81276abd8af2b451b92080a (diff) | |
Fixed Issue #55 - TPropertyAccess.get don't recognize magic getter __get
Diffstat (limited to 'tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php')
| -rw-r--r-- | tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php | 269 | 
1 files changed, 269 insertions, 0 deletions
diff --git a/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php b/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php new file mode 100644 index 00000000..b48363f1 --- /dev/null +++ b/tests/unit/Data/SqlMap/DataMapper/TPropertyAccessTest.php @@ -0,0 +1,269 @@ +<?php +require_once dirname(__FILE__).'/../../../phpunit.php'; + +Prado::using('System.Data.SqlMap.DataMapper.TSqlMapException'); +Prado::using('System.Data.SqlMap.DataMapper.TPropertyAccess'); + +/** + * @package System.Data.SqlMap.DataMapper + */ +class TPropertyAccessTest extends PHPUnit_Framework_TestCase +{ +	public function testHasPublicVar() +	{ +		$testobj = new _PropertyAccessTestHelperPublicVar(); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'a')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'b')); +		self::assertEquals(false, TPropertyAccess::has($testobj, 'c')); + +		self::assertEquals(false, TPropertyAccess::has($testobj, 'A')); +		self::assertEquals(false, TPropertyAccess::has($testobj, 'B')); +		self::assertEquals(false, TPropertyAccess::has($testobj, 'C')); +	} + +	public function testGetPublicVar() +	{ +		$testobj = new _PropertyAccessTestHelperPublicVar(); + +		self::assertEquals(1, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(2, TPropertyAccess::get($testobj, 'b')); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'c'); +	} + +	public function testSetPublicVar() +	{ +		$testobj = new _PropertyAccessTestHelperPublicVar(); + +		TPropertyAccess::set($testobj, 'a', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a')); + +		TPropertyAccess::set($testobj, 'b', 20); +		self::assertEquals(20, TPropertyAccess::get($testobj, 'b')); + +		TPropertyAccess::set($testobj, 'c', 30); +		self::assertEquals(30, TPropertyAccess::get($testobj, 'c')); +	} + + +	public function testHasStaticProperties() +	{ +		$testobj = new _PropertyAccessTestHelperStaticProperties(); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'a')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'b')); +		self::assertEquals(false, TPropertyAccess::has($testobj, 'c')); + +		self::assertEquals(true, TPropertyAccess::has($testobj, 'A')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'B')); +		self::assertEquals(false, TPropertyAccess::has($testobj, 'C')); +	} + +	public function testGetStaticProperties() +	{ +		$testobj = new _PropertyAccessTestHelperStaticProperties(); +		self::assertEquals(1, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(2, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(1, TPropertyAccess::get($testobj, 'A')); +		self::assertEquals(2, TPropertyAccess::get($testobj, 'B')); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'c'); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'C'); +	} + +	public function testSetStaticProperties() +	{ +		$testobj = new _PropertyAccessTestHelperStaticProperties(); +		TPropertyAccess::set($testobj, 'a', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'A')); + +		TPropertyAccess::set($testobj, 'A', 100); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'A')); + +		TPropertyAccess::set($testobj, 'b', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'B')); + +		TPropertyAccess::set($testobj, 'B', 100); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'B')); + +		TPropertyAccess::set($testobj, 'c', 30); +		self::assertEquals(30, TPropertyAccess::get($testobj, 'c')); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'C'); +	} + + +	public function testHasDynamicProperties() +	{ +		$testobj = new _PropertyAccessTestHelperDynamicProperties(); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'a')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'b')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'c')); + +		self::assertEquals(true, TPropertyAccess::has($testobj, 'A')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'B')); +		self::assertEquals(true, TPropertyAccess::has($testobj, 'C')); +	} + +	public function testGetDynamicProperties() +	{ +		$testobj = new _PropertyAccessTestHelperDynamicProperties(); +		self::assertEquals(1, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(2, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(1, TPropertyAccess::get($testobj, 'A')); +		self::assertEquals(2, TPropertyAccess::get($testobj, 'B')); + +		self::assertNull(TPropertyAccess::get($testobj, 'c')); +		self::assertNull(TPropertyAccess::get($testobj, 'C')); +	} + +	public function testSetDynamicProperties() +	{ +		$testobj = new _PropertyAccessTestHelperDynamicProperties(); +		TPropertyAccess::set($testobj, 'a', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'A')); + +		TPropertyAccess::set($testobj, 'A', 100); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'a')); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'A')); + +		TPropertyAccess::set($testobj, 'b', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'B')); + +		TPropertyAccess::set($testobj, 'B', 100); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'b')); +		self::assertEquals(100, TPropertyAccess::get($testobj, 'B')); + +		TPropertyAccess::set($testobj, 'c', 30); +		self::assertNull(TPropertyAccess::get($testobj, 'c')); +		self::assertNull(TPropertyAccess::get($testobj, 'C')); +	} + +	public function testArrayAccess() +	{ +		$thingamajig = array( +			'a'	=> 'foo', +			'b'	=> 'bar', +			'c' => new _PropertyAccessTestHelperPublicVar(), +			'd' => new _PropertyAccessTestHelperStaticProperties(), +			'e' => new _PropertyAccessTestHelperDynamicProperties(), +		); + +		$testobj = new _PropertyAccessTestHelperPublicVar(); +		TPropertyAccess::set($testobj, 'a', $thingamajig); + +		$tmp = TPropertyAccess::get($testobj, 'a'); +		self::assertTrue(is_array($tmp)); +		self::assertEquals($thingamajig, $tmp); + +		self::assertEquals('foo', TPropertyAccess::get($testobj, 'a.a')); +		self::assertEquals('bar', TPropertyAccess::get($testobj, 'a.b')); +		self::assertTrue(TPropertyAccess::get($testobj, 'a.c') instanceof _PropertyAccessTestHelperPublicVar); +		self::assertTrue(TPropertyAccess::get($testobj, 'a.d') instanceof _PropertyAccessTestHelperStaticProperties); +		self::assertTrue(TPropertyAccess::get($testobj, 'a.e') instanceof _PropertyAccessTestHelperDynamicProperties); + +		TPropertyAccess::set($testobj, 'a.c.a', 10); +		TPropertyAccess::set($testobj, 'a.d.a', 10); +		TPropertyAccess::set($testobj, 'a.e.a', 10); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a.c.a')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a.d.a')); +		self::assertEquals(10, TPropertyAccess::get($testobj, 'a.e.a')); + +		TPropertyAccess::set($testobj, 'a.c.c', 30); +		TPropertyAccess::set($testobj, 'a.d.c', 30); +		TPropertyAccess::set($testobj, 'a.e.c', 30); + +		self::assertEquals(30, TPropertyAccess::get($testobj, 'a.c.c')); +		self::assertEquals(30, TPropertyAccess::get($testobj, 'a.d.c')); + +		self::assertNull(TPropertyAccess::get($testobj, 'a.e.c')); +		self::assertNull(TPropertyAccess::get($testobj, 'a.e.C')); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'a.c.C'); + +		self::setExpectedException('TInvalidPropertyException'); +		TPropertyAccess::get($testobj, 'a.d.C'); +	} +} + + + +class _PropertyAccessTestHelperPublicVar +{ +	public $a = 1; +	public $b = 2; +} + +class _PropertyAccessTestHelperStaticProperties +{ +	private $_a = 1; +	private $_b = 2; + +	public function getA() +	{ +		return $this -> _a; +	} + +	public function setA($value) +	{ +		$this -> _a = $value; +	} + +	public function getB() +	{ +		return $this -> _b; +	} + +	public function setB($value) +	{ +		$this -> _b = $value; +	} +} + +class _PropertyAccessTestHelperDynamicProperties +{ +	private $_a = 1; +	private $_b = 2; + +	public function __set($name, $value) +	{ +		switch(strToLower($name)) +		{ +			case 'a': +				$this -> _a = $value; +			break; +			case 'b': +				$this -> _b = $value; +			break; +		} +	} + +	public function __get($name) +	{ +		switch(strToLower($name)) +		{ +			case 'a': +				return $this -> _a; +			break; +			case 'b': +				return $this -> _b; +			break; +			default: +				return null; +			break; +		} +	} +} + +?>
\ No newline at end of file  | 
