public function testGroupBy()
 {
     $query = OQL::select('from TestUser');
     $criteria = Criteria::create(TestUser::dao());
     $this->assertCriteria($query->addGroupBy(OQL::groupBy('id')), $criteria->addProjection(Projection::group('id')));
     $this->assertCriteria($query->addGroupBy(OQL::groupBy('-name')), $criteria->addProjection(Projection::group(Expression::minus('name'))));
     $this->assertEquals(OQL::groupBy('id, name')->toProjection(), Projection::chain()->add(Projection::group('id'))->add(Projection::group('name')));
     $this->assertEquals(OQL::groupBy('id + 2')->toProjection(), Projection::chain()->add(Projection::group(Expression::add('id', 2))));
     $this->assertEquals(OQL::groupBy('id > 2')->toProjection(), Projection::chain()->add(Projection::group(Expression::gt('id', 2))));
     $this->assertEquals(OQL::groupBy('$1')->bindNext('id')->toProjection(), Projection::chain()->add(Projection::group('id')));
     $this->assertEquals(OQL::groupBy('$1, $2 + 3')->bindNext('name')->bindNext('id')->toProjection(), Projection::chain()->add(Projection::group('name'))->add(Projection::group(Expression::add('id', 3))));
 }