/** * Tests the parsing of conditional expressions from their string * representations. */ public function testParsingFromString() { $x = new GaDataConditionalExpression('ga:foo==bar'); $this->assertEquals('ga:foo', $x->getLeftOperand()); $this->assertEquals(GaDataConditionalExpression::OP_EQ, $x->getOperator()); $this->assertEquals('bar', $x->getRightOperand()); $x = new GaDataConditionalExpression('ga:bar!@234.5'); $this->assertEquals('ga:bar', $x->getLeftOperand()); $this->assertEquals(GaDataConditionalExpression::OP_NOT_CONTAINS, $x->getOperator()); $this->assertEquals(234.5, $x->getRightOperand()); $x = new GaDataConditionalExpression('ga:baz=~foo\\,bar'); $this->assertEquals('ga:baz', $x->getLeftOperand()); $this->assertEquals(GaDataConditionalExpression::OP_REGEXP, $x->getOperator()); $this->assertEquals('foo\\,bar', $x->getRightOperand()); $x = new GaDataConditionalExpression('ga:bumf!~a\\;b\\;c\\;d\\;'); $this->assertEquals('ga:bumf', $x->getLeftOperand()); $this->assertEquals(GaDataConditionalExpression::OP_NOT_REGEXP, $x->getOperator()); $this->assertEquals('a\\;b\\;c\\;d\\;', $x->getRightOperand()); // The parsing should also perform escaping where necessary $x = new GaDataConditionalExpression('ga:asdf>=2,5'); $this->assertEquals('ga:asdf', $x->getLeftOperand()); $this->assertEquals(GaDataConditionalExpression::OP_GE, $x->getOperator()); $this->assertEquals('2\\,5', $x->getRightOperand()); }