/** * test array access */ function testArrayAccess() { // make an eptTest object $this->assertTrue($o = new eptTest("XXX", "YYY", "ZZZ")); // wrap it with epObject $this->assertTrue($w = new epObject($o)); // test new object is not dirty $this->assertFalse($w->epIsDirty()); // test epGet('x') against direct object property access ($o->x) $this->assertTrue($w['x'] === $o->x); // test epSet('x'), epGet('x'), and $w->x (overloading __get()) $value = md5($w['x']); $this->assertTrue($w['x'] = $value); $this->assertTrue($o->x === $value); $this->assertTrue($w['x'] === $o->x); $this->assertTrue($w->epIsDirty()); // check if 'x' is in modified list $this->assertTrue($modified = $w->epGetModifiedVars()); $this->assertTrue(array_key_exists('x', $modified)); $this->assertTrue($modified['x'] === $value); // getting protected 'y' gets exception try { $this->assertTrue($w['y'] === false); } catch (Exception $e) { // !!!simpletest seem to ignore assert in catch block $this->assertTrue($e instanceof epExceptionObject); } // setting protected 'y' gets exception try { $w['y'] = 'YYY|YYY'; } catch (Exception $e) { // !!!simpletest seem to ignore assert in catch block $this->assertTrue($e instanceof epExceptionObject); } // getting protected 'z' gets exception try { $this->assertTrue($w['z'] === false); } catch (Exception $e) { // !!!simpletest seem to ignore assert in catch block $this->assertTrue($e instanceof epExceptionObject); } // setting protected 'z' gets exception try { $w['z'] = 'ZZZ|ZZZ'; } catch (Exception $e) { // !!!simpletest seem to ignore assert in catch block $this->assertTrue($e instanceof epExceptionObject); } // test foreach $vars = array(); foreach ($w as $var => $value) { $vars[$var] = $value; } // check var number $this->assertTrue(count($vars) == $w->count()); }