Пример #1
0
 /**
  * Test sql generation with 0 case.
  *
  * @return void
  */
 public function testSqlOutputZero()
 {
     $expression = new QueryExpression();
     $expression->add(['id' => 'test']);
     $caseExpression = new CaseExpression([$expression], [0], ['integer']);
     $expected = 'CASE WHEN id = :c0 THEN :c1 END';
     $binder = new ValueBinder();
     $this->assertSame($expected, $caseExpression->sql($binder));
     $expected = [':c0' => ['value' => 'test', 'type' => null, 'placeholder' => 'c0'], ':c1' => ['value' => 0, 'type' => 'integer', 'placeholder' => 'c1']];
     $this->assertEquals($expected, $binder->bindings());
 }
Пример #2
0
 /**
  * Test that the sql output works correctly
  *
  * @return void
  */
 public function testSqlOutput()
 {
     $expr = new QueryExpression();
     $expr->eq('test', 'true');
     $caseExpression = new CaseExpression($expr, 'foobar');
     $expected = 'CASE WHEN test = :c0 THEN :c1 END';
     $this->assertSame($expected, $caseExpression->sql(new ValueBinder()));
     $expr2 = new QueryExpression();
     $expr2->eq('test2', 'false');
     $caseExpression->add($expr2);
     $expected = 'CASE WHEN test = :c0 THEN :c1 WHEN test2 = :c2 THEN :c3 END';
     $this->assertSame($expected, $caseExpression->sql(new ValueBinder()));
     $caseExpression = new CaseExpression([$expr], ['foobar', 'else']);
     $expected = 'CASE WHEN test = :c0 THEN :c1 ELSE :c2 END';
     $this->assertSame($expected, $caseExpression->sql(new ValueBinder()));
 }