/** * 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()); }
/** * 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())); }