/**
  *
  * @dataProvider mergeProvider
  */
 public function testMerge($overwriteLimit, $mergeOrderBy, $expectedQuery, $expectedBoundParameters)
 {
     $this->queryBuilder->from('book', 'b')->select('id')->select('count(*)', 'nb')->join('author', 'a', 'a.id = b.author_id', SelectQueryBuilder::INNER_JOIN)->where('id', 5, SelectQueryBuilder::LESS_THAN)->groupBy('id')->having('score', 5, SelectQueryBuilder::LESS_THAN)->orderBy('price', SelectQueryBuilder::DESC)->limit(20)->offset(10);
     $qb = new SelectQueryBuilder();
     $qb->from('book')->select('title')->addOption('DISTINCT')->join('editor', 'e', 'e.id = b.editor_id', SelectQueryBuilder::LEFT_JOIN)->_open(SelectQueryBuilder::LOGICAL_OR)->where('title', 'Dune', SelectQueryBuilder::NOT_EQUALS, null)->_close()->groupBy('score', SelectQueryBuilder::ASC)->openHaving(SelectQueryBuilder::LOGICAL_OR)->having('price', 9, SelectQueryBuilder::NOT_EQUALS, null)->closeHaving()->orderBy('score', SelectQueryBuilder::ASC)->limit(50)->offset(0);
     $this->queryBuilder->merge($qb, $overwriteLimit, $mergeOrderBy);
     $this->assertEquals($expectedQuery, $this->queryBuilder->getQueryString());
     $this->assertEquals($expectedBoundParameters, $this->queryBuilder->getBoundParameters());
 }