'AAA'), array('Name' => 'AAA'), array('Name' => 'BBB'), array('Name' => 'BBB'), array('Name' => 'AAA'), array('Name' => 'BBB'), array('Name' => 'CCC'), array('Name' => 'CCC') ))); $grouped = $list->groupBy('Name'); $this->assertEquals(3, count($grouped)); $this->assertEquals(3, count($grouped['AAA'])); $this->assertEquals(3, count($grouped['BBB'])); $this->assertEquals(2, count($grouped['CCC'])); } public function testGroupedBy() { $list = new GroupedList(new ArrayList(array( array('Name' => 'AAA'), array('Name' => 'AAA'), array('Name' => 'BBB'), array('Name' => 'BBB'), array('Name' => 'AAA'), array('Name' => 'BBB'), array('Name' => 'CCC'), array('Name' => 'CCC') ))); $grouped = $list->GroupedBy('Name'); $first = $grouped->first(); $last = $grouped->last(); $this->assertEquals(3, count($first->Children)); $this->assertEquals('AAA', $first->Name); $this->assertEquals(2, count($last->Children)); $this->assertEquals('CCC', $last->Name); } public function testGroupedByChildren(){ $list = GroupedList::create( ArrayList::create( array( ArrayData::create(array( 'Name' => 'AAA', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '222', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '333', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '222', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '333', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '333', )) ) ) ); $grouped = $list->GroupedBy('Name'); foreach($grouped as $group){ $children = $group->Children; $childGroups = $children->GroupedBy('Number'); $this->assertEquals(3, count($childGroups)); $first = $childGroups->first(); $last = $childGroups->last(); if($group->Name == 'AAA'){ $this->assertEquals(3, count($first->Children)); $this->assertEquals('111', $first->Number); $this->assertEquals(2, count($last->Children)); $this->assertEquals('333', $last->Number); } if($group->Name == 'BBB'){ $this->assertEquals(2, count($first->Children)); $this->assertEquals('111', $first->Number); $this->assertEquals(1, count($last->Children)); $this->assertEquals('333', $last->Number); } } } public function testTotalItems() { $list = GroupedList::create( ArrayList::create( array( ArrayData::create(array( 'Name' => 'AAA', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '111', )), ArrayData::create(array( 'Name' => 'AAA', 'Number' => '222', )), ArrayData::create(array( 'Name' => 'BBB', 'Number' => '111', )) ) ) ); $this->assertEquals(4, $list->TotalItems()); } }