function testIterator() { $set = new DataObjectSet(array($one = new DataObject(array('Title' => 'one')), $two = new DataObject(array('Title' => 'two')), $three = new DataObject(array('Title' => 'three')), $four = new DataObject(array('Title' => 'four')))); // test Pos() with foreach() $i = 0; foreach ($set as $item) { $i++; $this->assertEquals($i, $item->Pos(), "Iterator position is set correctly on ViewableData when iterated with foreach()"); } // test Pos() manually $this->assertEquals(1, $one->Pos()); $this->assertEquals(2, $two->Pos()); $this->assertEquals(3, $three->Pos()); $this->assertEquals(4, $four->Pos()); // test DataObjectSet->Count() $this->assertEquals(4, $set->Count()); // test DataObjectSet->First() $this->assertSame($one, $set->First()); // test DataObjectSet->Last() $this->assertSame($four, $set->Last()); // test ViewableData->First() $this->assertTrue($one->First()); $this->assertFalse($two->First()); $this->assertFalse($three->First()); $this->assertFalse($four->First()); // test ViewableData->Last() $this->assertFalse($one->Last()); $this->assertFalse($two->Last()); $this->assertFalse($three->Last()); $this->assertTrue($four->Last()); // test ViewableData->Middle() $this->assertFalse($one->Middle()); $this->assertTrue($two->Middle()); $this->assertTrue($three->Middle()); $this->assertFalse($four->Middle()); // test ViewableData->Even() $this->assertFalse($one->Even()); $this->assertTrue($two->Even()); $this->assertFalse($three->Even()); $this->assertTrue($four->Even()); // test ViewableData->Odd() $this->assertTrue($one->Odd()); $this->assertFalse($two->Odd()); $this->assertTrue($three->Odd()); $this->assertFalse($four->Odd()); }
/** * Test {@link DataObjectSet->sort()} */ function testSort() { $set = new DataObjectSet(array(array('Name' => 'Object1', 'F1' => 1, 'F2' => 2, 'F3' => 3), array('Name' => 'Object2', 'F1' => 2, 'F2' => 1, 'F3' => 4), array('Name' => 'Object3', 'F1' => 5, 'F2' => 2, 'F3' => 2))); // test a single sort ASC $set->sort('F3', 'ASC'); $this->assertEquals($set->First()->Name, 'Object3', 'Object3 should be first in the set'); // test a single sort DESC $set->sort('F3', 'DESC'); $this->assertEquals($set->First()->Name, 'Object2', 'Object2 should be first in the set'); // test a multi sort $set->sort(array('F2' => 'ASC', 'F1' => 'ASC')); $this->assertEquals($set->Last()->Name, 'Object3', 'Object3 should be last in the set'); // test a multi sort $set->sort(array('F2' => 'ASC', 'F1' => 'DESC')); $this->assertEquals($set->Last()->Name, 'Object1', 'Object1 should be last in the set'); }