/** * @testdox Method reset() resets internal state of Select object, based on input * @covers SphinxSearch\Db\Sql\Select::reset */ public function testReset() { $select = new Select(); // table $select->from('foo'); $this->assertEquals('foo', $select->getRawState(Select::TABLE)); $select->reset(Select::TABLE); $this->assertNull($select->getRawState(Select::TABLE)); // columns $select->columns(['foo']); $this->assertEquals(['foo'], $select->getRawState(Select::COLUMNS)); $select->reset(Select::COLUMNS); $this->assertEmpty($select->getRawState(Select::COLUMNS)); // where $select->where('foo = bar'); $where1 = $select->getRawState(Select::WHERE); $this->assertEquals(1, $where1->count()); $select->reset(Select::WHERE); $where2 = $select->getRawState(Select::WHERE); $this->assertEquals(0, $where2->count()); $this->assertNotSame($where1, $where2); // group $select->group(['foo']); $this->assertEquals(['foo'], $select->getRawState(Select::GROUP)); $select->reset(Select::GROUP); $this->assertEmpty($select->getRawState(Select::GROUP)); // within group order by $select->withinGroupOrder(['foo']); $this->assertEquals(['foo'], $select->getRawState(Select::WITHINGROUPORDER)); $select->reset(Select::WITHINGROUPORDER); $this->assertEmpty($select->getRawState(Select::WITHINGROUPORDER)); // having $select->having('foo = bar'); $having1 = $select->getRawState(Select::HAVING); $this->assertEquals(1, $having1->count()); $select->reset(Select::HAVING); $having2 = $select->getRawState(Select::HAVING); $this->assertEquals(0, $having2->count()); $this->assertNotSame($having1, $having2); // order $select->order('foo asc'); $this->assertEquals(['foo asc'], $select->getRawState(Select::ORDER)); $select->reset(Select::ORDER); $this->assertEmpty($select->getRawState(Select::ORDER)); // limit $select->limit(5); $this->assertEquals(5, $select->getRawState(Select::LIMIT)); $select->reset(Select::LIMIT); $this->assertNull($select->getRawState(Select::LIMIT)); // offset $select->offset(10); $this->assertEquals(10, $select->getRawState(Select::OFFSET)); $select->reset(Select::OFFSET); $this->assertNull($select->getRawState(Select::OFFSET)); // option $select->option(['ranker' => 'bm25']); $this->assertEquals(['ranker' => 'bm25'], $select->getRawState(Select::OPTION)); $select->reset(Select::OPTION); $this->assertEmpty($select->getRawState(Select::OPTION)); }