| 
<?php// Tests for AliasedArray class
 
 require __DIR__ . '/../AliasedArray.class.php';
 
 class AliasedArrayTest extends PHPUnit_Framework_TestCase {
 
 function test_1() {
 
 $a = new AliasedArray();
 
 $this->assertEquals(NULL, $a->get(0));
 $this->assertEquals(NULL, $a['abc']);
 
 // default array assignment
 
 $a->set('zero');
 $this->assertEquals('zero', $a->get(0));
 
 $a[] = 'one';
 $this->assertEquals('one', $a->get(1));
 
 $this->assertEquals(2, count($a));
 
 // overwrite
 
 $a->set('newzero', 0);
 $this->assertEquals('newzero', $a->get(0));
 
 // set an alias of zerokey to element 0.
 
 $a->alias(0, 'zerokey');
 try{
 $a->alias(0, 'zerokey');
 $this->fail('Failed to throw exception for duplicate alias');
 } catch (Exception $e) {}
 
 $this->assertTrue(isset($a[0]));
 $this->assertEquals('newzero', $a[0]);
 $this->assertEquals('newzero', $a->get('zerokey'));
 $this->assertEquals('newzero', $a['zerokey']);
 
 // Try to add a alias pointing to a non-existant index
 
 try {
 $a->alias(400, 'a2');
 $this->fail('Failed to throw exception when no key for alias exists');
 } catch (Exception $exc) {      }
 
 $a[400] = null;
 $a->alias(400, 'a2');
 $a->alias(400, 'a3');
 $this->assertNull($a->get(400));
 $this->assertNull($a->get('a2'));
 $this->assertNull($a->get('a3'));
 
 $a[400] = 1;
 
 unset($a[400]);
 $this->assertNull($a[400]);
 $this->assertNull($a['a2']);
 $this->assertNull($a['a3']);
 
 $a[400] = 1;
 $a->alias(400, 'b');
 unset($a['b']);
 $this->assertNull($a[400]);
 $this->assertNull($a['b']);
 
 // null returned for element never set.
 
 $this->assertNull($a[1000]);
 
 // make sure iterator works.
 
 for($i=0; $i<count($a); $i++) {
 if ($i == 0) $this->assertEquals('newzero', $a[0]);
 if ($i == 1) $this->assertEquals('one', $a[1]);
 }
 
 $a->append('hello');                    // adds element 401
 $this->assertTrue(count($a) == 3);
 
 $a['abc'] = 'abc';
 $this->assertTrue(count($a) == 4);
 
 $copy = $a->getArrayCopy();
 $this->assertTrue(count($copy) == count($a));
 
 $this->assertEquals(1, count($a->getAliases()));
 }
 
 function testParent() {
 $aa = new AliasedArray(array('a'=>1,'b'=>2,'c'=>3));
 $this->assertEquals(3,$aa->count());
 $aa->alias('a', 'one');
 $aa->alias('b', 'two');
 $aa->alias('c', 'three');
 $this->assertEquals(1, $aa['one']);
 $this->assertEquals(2, $aa['two']);
 $this->assertEquals(3, $aa['three']);
 }
 
 }
 
 ?>
 
 |