public function testAssemble() { $predicate = new BetweenPredicate(); $predicate->setField('field'); $this->assertEquals('field BETWEEN NULL AND NULL', QueryAssembler::stringify($predicate)); $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5)); $this->assertEquals('field BETWEEN 1 AND 5', QueryAssembler::stringify($predicate)); $predicate->setValues((new NumericExpression())->setValue('1'), (new NumericExpression())->setValue('5')); $this->assertEquals('field BETWEEN 1 AND 5', QueryAssembler::stringify($predicate)); $predicate->setValues((new StringExpression())->setValue('abc'), (new StringExpression())->setValue('def')); $this->assertEquals('field BETWEEN "abc" AND "def"', QueryAssembler::stringify($predicate)); $predicate = BetweenPredicate::create('field', 123, 456); $this->assertEquals('field BETWEEN 123 AND 456', QueryAssembler::stringify($predicate)); $predicate = BetweenPredicate::create('field', 'abc', 'def'); $this->assertEquals('field BETWEEN "abc" AND "def"', QueryAssembler::stringify($predicate)); }
public function testAssemblerPrepare() { $stm = new QueryStatement(); $stm->addClause(new SelectClause())->from('mytable'); $stm->where(EqualPredicate::create('field1', 'value1')); $assembler = new QueryAssembler($stm, false); $this->assertEmpty($assembler->getParameters()); $this->assertFalse($assembler->isForPrepare()); $this->assertEquals('SELECT * FROM mytable WHERE field1 = "value1"', (string) $assembler); $stm->andWhere(['AND' => [EqualPredicate::create('field2', null), NotEqualPredicate::create('field3', null)], 'OR' => BetweenPredicate::create('field4', 123, 456)]); $assembler = new QueryAssembler($stm, true); $this->assertNotEmpty($assembler->getParameters()); $this->assertTrue($assembler->isForPrepare()); $this->assertEquals('SELECT * FROM mytable WHERE field1 = ? AND ((field2 IS NULL AND field3 IS NOT NULL) AND field4 BETWEEN ? AND ?)', (string) $assembler); $this->assertEquals(['value1', 123, 456], $assembler->getParameters()); }
public function testBetween() { $predicate = new NotBetweenPredicate(); $predicate->setField('field'); $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5)); $this->assertEquals('"field" <= 1 AND "field" >= 5', CqlAssembler::stringify($predicate)); $predicate = new BetweenPredicate(); $predicate->setField('field'); $this->assertEquals('"field" >= NULL AND "field" <= NULL', CqlAssembler::stringify($predicate)); $predicate->setValues((new NumericExpression())->setValue(1), (new NumericExpression())->setValue(5)); $this->assertEquals('"field" >= 1 AND "field" <= 5', CqlAssembler::stringify($predicate)); $predicate->setValues((new NumericExpression())->setValue('1'), (new NumericExpression())->setValue('5')); $this->assertEquals('"field" >= 1 AND "field" <= 5', CqlAssembler::stringify($predicate)); $predicate->setValues((new StringExpression())->setValue('abc'), (new StringExpression())->setValue('def')); $this->assertEquals('"field" >= \'abc\' AND "field" <= \'def\'', CqlAssembler::stringify($predicate)); $set = new PredicateSet(); $set->addPredicate($predicate); $set->addPredicate(BetweenPredicate::create('field2', 123, 456)); $this->assertEquals('"field" >= \'abc\' AND "field" <= \'def\' AND "field2" >= 123 AND "field2" <= 456', CqlAssembler::stringify($set)); }