1<?php 2/** 3 * Zend Framework (http://framework.zend.com/) 4 * 5 * @link http://github.com/zendframework/zf2 for the canonical source repository 6 * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com) 7 * @license http://framework.zend.com/license/new-bsd New BSD License 8 */ 9 10namespace ZendTest\Db\Sql\Predicate; 11 12use PHPUnit\Framework\TestCase; 13use Zend\Db\Sql\Predicate\Operator; 14 15class OperatorTest extends TestCase 16{ 17 public function testEmptyConstructorYieldsNullLeftAndRightValues() 18 { 19 $operator = new Operator(); 20 self::assertNull($operator->getLeft()); 21 self::assertNull($operator->getRight()); 22 } 23 24 public function testEmptyConstructorYieldsDefaultsForOperatorAndLeftAndRightTypes() 25 { 26 $operator = new Operator(); 27 self::assertEquals(Operator::OP_EQ, $operator->getOperator()); 28 self::assertEquals(Operator::TYPE_IDENTIFIER, $operator->getLeftType()); 29 self::assertEquals(Operator::TYPE_VALUE, $operator->getRightType()); 30 } 31 32 public function testCanPassAllValuesToConstructor() 33 { 34 $operator = new Operator('bar', '>=', 'foo.bar', Operator::TYPE_VALUE, Operator::TYPE_IDENTIFIER); 35 self::assertEquals(Operator::OP_GTE, $operator->getOperator()); 36 self::assertEquals('bar', $operator->getLeft()); 37 self::assertEquals('foo.bar', $operator->getRight()); 38 self::assertEquals(Operator::TYPE_VALUE, $operator->getLeftType()); 39 self::assertEquals(Operator::TYPE_IDENTIFIER, $operator->getRightType()); 40 41 $operator = new Operator(['bar' => Operator::TYPE_VALUE], '>=', ['foo.bar' => Operator::TYPE_IDENTIFIER]); 42 self::assertEquals(Operator::OP_GTE, $operator->getOperator()); 43 self::assertEquals(['bar' => Operator::TYPE_VALUE], $operator->getLeft()); 44 self::assertEquals(['foo.bar' => Operator::TYPE_IDENTIFIER], $operator->getRight()); 45 self::assertEquals(Operator::TYPE_VALUE, $operator->getLeftType()); 46 self::assertEquals(Operator::TYPE_IDENTIFIER, $operator->getRightType()); 47 48 $operator = new Operator('bar', '>=', 0); 49 self::assertEquals(0, $operator->getRight()); 50 } 51 52 public function testLeftIsMutable() 53 { 54 $operator = new Operator(); 55 $operator->setLeft('foo.bar'); 56 self::assertEquals('foo.bar', $operator->getLeft()); 57 } 58 59 public function testRightIsMutable() 60 { 61 $operator = new Operator(); 62 $operator->setRight('bar'); 63 self::assertEquals('bar', $operator->getRight()); 64 } 65 66 public function testLeftTypeIsMutable() 67 { 68 $operator = new Operator(); 69 $operator->setLeftType(Operator::TYPE_VALUE); 70 self::assertEquals(Operator::TYPE_VALUE, $operator->getLeftType()); 71 } 72 73 public function testRightTypeIsMutable() 74 { 75 $operator = new Operator(); 76 $operator->setRightType(Operator::TYPE_IDENTIFIER); 77 self::assertEquals(Operator::TYPE_IDENTIFIER, $operator->getRightType()); 78 } 79 80 public function testOperatorIsMutable() 81 { 82 $operator = new Operator(); 83 $operator->setOperator(Operator::OP_LTE); 84 self::assertEquals(Operator::OP_LTE, $operator->getOperator()); 85 } 86 87 public function testRetrievingWherePartsReturnsSpecificationArrayOfLeftAndRightAndArrayOfTypes() 88 { 89 $operator = new Operator(); 90 $operator->setLeft('foo') 91 ->setOperator('>=') 92 ->setRight('foo.bar') 93 ->setLeftType(Operator::TYPE_VALUE) 94 ->setRightType(Operator::TYPE_IDENTIFIER); 95 $expected = [[ 96 '%s >= %s', 97 ['foo', 'foo.bar'], 98 [Operator::TYPE_VALUE, Operator::TYPE_IDENTIFIER], 99 ]]; 100 $test = $operator->getExpressionData(); 101 self::assertEquals($expected, $test, var_export($test, 1)); 102 } 103} 104