| 
<?php
 namespace Wingu\OctopusCore\EventDispatcher\Tests;
 
 /**
 * Base class for test cases.
 */
 abstract class TestCase extends \PHPUnit_Framework_TestCase {
 
 /**
 * This is a helper method to call a private/protected method on an object.
 *
 * @param Object $obj The object with the method.
 * @param string $methodName The name of the method.
 * @param array $args The arguments for the method.
 * @return mixed
 */
 public function callMethod($obj, $methodName, array $args = array()) {
 $class = new \ReflectionClass($obj);
 $method = $class->getMethod($methodName);
 $method->setAccessible(true);
 return $method->invokeArgs($obj, $args);
 }
 
 /**
 * This is a helper method to set the value of a private/protected property on an object.
 *
 * @param Object $obj The object with the property.
 * @param string $property The name of the property to set.
 * @param mixed $value The value to set.
 */
 public function setProperty($obj, $property, $value) {
 $class = new \ReflectionClass($obj);
 $property = $class->getProperty($property);
 $property->setAccessible(true);
 $property->setValue($obj, $value);
 }
 
 /**
 * This is a helper method to get the value of a private/protected property on an object.
 *
 * @param Object $obj The object with the property.
 * @param string $property The name of the property to get.
 * @return mixed
 */
 public function getProperty($obj, $property) {
 $class = new \ReflectionClass($obj);
 $property = $class->getProperty($property);
 $property->setAccessible(true);
 return $property->getValue($obj);
 }
 
 }
 |