You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							182 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
	
	
							182 lines
						
					
					
						
							4.4 KiB
						
					
					
				| <?php | |
| namespace yiiunit\framework\base; | |
|  | |
| use yii\base\Object; | |
| use yiiunit\TestCase; | |
|  | |
| /** | |
|  * @group base | |
|  */ | |
| class ObjectTest extends TestCase | |
| { | |
| 	/** | |
| 	 * @var NewObject | |
| 	 */ | |
| 	protected $object; | |
|  | |
| 	protected function setUp() | |
| 	{ | |
| 		parent::setUp(); | |
| 		$this->mockApplication(); | |
| 		$this->object = new NewObject; | |
| 	} | |
|  | |
| 	protected function tearDown() | |
| 	{ | |
| 		parent::tearDown(); | |
| 		$this->object = null; | |
| 	} | |
|  | |
| 	public function testHasProperty() | |
| 	{ | |
| 		$this->assertTrue($this->object->hasProperty('Text')); | |
| 		$this->assertTrue($this->object->hasProperty('text')); | |
| 		$this->assertFalse($this->object->hasProperty('Caption')); | |
| 		$this->assertTrue($this->object->hasProperty('content')); | |
| 		$this->assertFalse($this->object->hasProperty('content', false)); | |
| 		$this->assertFalse($this->object->hasProperty('Content')); | |
| 	} | |
|  | |
| 	public function testCanGetProperty() | |
| 	{ | |
| 		$this->assertTrue($this->object->canGetProperty('Text')); | |
| 		$this->assertTrue($this->object->canGetProperty('text')); | |
| 		$this->assertFalse($this->object->canGetProperty('Caption')); | |
| 		$this->assertTrue($this->object->canGetProperty('content')); | |
| 		$this->assertFalse($this->object->canGetProperty('content', false)); | |
| 		$this->assertFalse($this->object->canGetProperty('Content')); | |
| 	} | |
|  | |
| 	public function testCanSetProperty() | |
| 	{ | |
| 		$this->assertTrue($this->object->canSetProperty('Text')); | |
| 		$this->assertTrue($this->object->canSetProperty('text')); | |
| 		$this->assertFalse($this->object->canSetProperty('Object')); | |
| 		$this->assertFalse($this->object->canSetProperty('Caption')); | |
| 		$this->assertTrue($this->object->canSetProperty('content')); | |
| 		$this->assertFalse($this->object->canSetProperty('content', false)); | |
| 		$this->assertFalse($this->object->canSetProperty('Content')); | |
| 	} | |
|  | |
| 	public function testGetProperty() | |
| 	{ | |
| 		$this->assertTrue('default' === $this->object->Text); | |
| 		$this->setExpectedException('yii\base\UnknownPropertyException'); | |
| 		$value2 = $this->object->Caption; | |
| 	} | |
|  | |
| 	public function testSetProperty() | |
| 	{ | |
| 		$value = 'new value'; | |
| 		$this->object->Text = $value; | |
| 		$this->assertEquals($value, $this->object->Text); | |
| 		$this->setExpectedException('yii\base\UnknownPropertyException'); | |
| 		$this->object->NewMember = $value; | |
| 	} | |
|  | |
| 	public function testSetReadOnlyProperty() | |
| 	{ | |
| 		$this->setExpectedException('yii\base\InvalidCallException'); | |
| 		$this->object->object = 'test'; | |
| 	} | |
|  | |
| 	public function testIsset() | |
| 	{ | |
| 		$this->assertTrue(isset($this->object->Text)); | |
| 		$this->assertFalse(empty($this->object->Text)); | |
|  | |
| 		$this->object->Text = ''; | |
| 		$this->assertTrue(isset($this->object->Text)); | |
| 		$this->assertTrue(empty($this->object->Text)); | |
|  | |
| 		$this->object->Text = null; | |
| 		$this->assertFalse(isset($this->object->Text)); | |
| 		$this->assertTrue(empty($this->object->Text)); | |
|  | |
| 		$this->assertFalse(isset($this->object->unknownProperty)); | |
| 		$this->assertTrue(empty($this->object->unknownProperty)); | |
| 	} | |
|  | |
| 	public function testUnset() | |
| 	{ | |
| 		unset($this->object->Text); | |
| 		$this->assertFalse(isset($this->object->Text)); | |
| 		$this->assertTrue(empty($this->object->Text)); | |
| 	} | |
|  | |
| 	public function testUnsetReadOnlyProperty() | |
| 	{ | |
| 		$this->setExpectedException('yii\base\InvalidCallException'); | |
| 		unset($this->object->object); | |
| 	} | |
|  | |
| 	public function testCallUnknownMethod() | |
| 	{ | |
| 		$this->setExpectedException('yii\base\UnknownMethodException'); | |
| 		$this->object->unknownMethod(); | |
| 	} | |
|  | |
| 	public function testArrayProperty() | |
| 	{ | |
| 		$this->assertEquals([], $this->object->items); | |
| 		// the following won't work | |
| 		/* | |
| 		$this->object->items[] = 1; | |
| 		$this->assertEquals([1], $this->object->items); | |
| 		*/ | |
| 	} | |
|  | |
| 	public function testObjectProperty() | |
| 	{ | |
| 		$this->assertTrue($this->object->object instanceof NewObject); | |
| 		$this->assertEquals('object text', $this->object->object->text); | |
| 		$this->object->object->text = 'new text'; | |
| 		$this->assertEquals('new text', $this->object->object->text); | |
| 	} | |
|  | |
| 	public function testConstruct() | |
| 	{ | |
| 		$object = new NewObject(['text' => 'test text']); | |
| 		$this->assertEquals('test text', $object->getText()); | |
| 	} | |
| } | |
|  | |
|  | |
| class NewObject extends Object | |
| { | |
| 	private $_object = null; | |
| 	private $_text = 'default'; | |
| 	private $_items = []; | |
| 	public $content; | |
|  | |
| 	public function getText() | |
| 	{ | |
| 		return $this->_text; | |
| 	} | |
|  | |
| 	public function setText($value) | |
| 	{ | |
| 		$this->_text = $value; | |
| 	} | |
|  | |
| 	public function getObject() | |
| 	{ | |
| 		if (!$this->_object) { | |
| 			$this->_object = new self; | |
| 			$this->_object->_text = 'object text'; | |
| 		} | |
| 		return $this->_object; | |
| 	} | |
|  | |
| 	public function getExecute() | |
| 	{ | |
| 		return function ($param) { | |
| 			return $param * 2; | |
| 		}; | |
| 	} | |
|  | |
| 	public function getItems() | |
| 	{ | |
| 		return $this->_items; | |
| 	} | |
| }
 | |
| 
 |