blob: c77aebbf7cc46a3e0dc1eae170bf0c44be5c1085 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.flex.pmd.parser.impl;
import org.apache.flex.pmd.parser.exceptions.TokenException;
import org.junit.Test;
public class TestExpression extends AbstractStatementTestBase {
@Test
public void testAddExpression() throws TokenException {
assertStatement("1",
"5+6",
"<add line=\"1\"><primary line=\"1\""
+ ">5</primary><op line=\"1\">+</op>" + "<primary line=\"1\">6</primary></add>");
}
@Test
public void testAndExpression() throws TokenException {
assertStatement("1",
"5&&6",
"<and line=\"1\"><primary line=\"1\">5</primary>"
+ "<op line=\"1\">&&</op>" + "<primary line=\"1\">6</primary></and>");
}
@Test
public void testAssignmentExpression() throws TokenException {
assertStatement("1",
"x+=6",
"<assign line=\"1\"><primary line=\"1\">x"
+ "</primary><op line=\"1\">+=</op><primary line=\"1\""
+ ">6</primary></assign>");
}
@Test
public void testBitwiseAndExpression() throws TokenException {
assertStatement("1",
"5&6",
"<b-and line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">&</op><primary line=\"1\">6</primary></b-and>");
}
@Test
public void testBitwiseOrExpression() throws TokenException {
assertStatement("1",
"5|6",
"<b-or line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">|</op><primary line=\"1\">6</primary></b-or>");
}
@Test
public void testBitwiseXorExpression() throws TokenException {
assertStatement("1",
"5^6",
"<b-xor line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">^</op><primary line=\"1\">6</primary></b-xor>");
}
@Test
public void testConditionalExpression() throws TokenException {
assertStatement("1",
"true?5:6",
"<conditional line=\"1\"><primary line=\"1\">"
+ "true</primary><primary line=\"1\">5" + "</primary><primary line=\"1\">6"
+ "</primary></conditional>");
}
@Test
public void testDivision() throws TokenException {
assertStatement("",
"offset = ( this[ axis.unscaled ] / 2 - ( rightPos ) / 2 );",
"<assign line=\"1\"><primary line=\"1\">offset</primary><op line=\"1\">=</op>"
+ "<primary line=\"1\"><encapsulated line=\"1\"><add line=\"1\"><mul line=\"1\">"
+ "<arr-acc line=\"1\"><primary line=\"1\">this</primary><dot line=\"1\"><primary "
+ "line=\"1\">axis</primary><primary line=\"1\">unscaled</primary></dot></arr-acc>"
+ "<op line=\"1\">/</op><primary line=\"1\">2</primary></mul><op line=\"1\">-</op>"
+ "<mul line=\"1\"><primary line=\"1\"><encapsulated line=\"1\"><primary line=\"1\">"
+ "rightPos</primary></encapsulated></primary><op line=\"1\">/</op><primary line=\"1\">"
+ "2</primary></mul></add></encapsulated></primary></assign>");
}
@Test
public void testEncapsulated() throws TokenException {
assertStatement("",
"(dataProvider as ArrayCollection) = null",
"<assign line=\"1\"><primary line=\"1\">"
+ "<encapsulated line=\"1\"><relation line=\"1\">"
+ "<primary line=\"1\">dataProvider</primary>"
+ "<as line=\"1\">as</as><primary line=\"1\">"
+ "ArrayCollection</primary></relation></encapsulated></primary>"
+ "<op line=\"1\">=</op><primary line=\"1\">" + "null</primary></assign>");
}
@Test
public void testEqualityExpression() throws TokenException {
assertStatement("1",
"5!==6",
"<equality line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">!==</op><primary line=\"1\">6</primary></equality>");
}
@Test
public void testExpressionList() throws TokenException {
assertStatement("1",
"5&&6,5&&9",
"<expr-list line=\"1\"><and line=\"1\">"
+ "<primary line=\"1\">5</primary><op line=\"1\">"
+ "&&</op><primary line=\"1\">6</primary></and><and line=\"1\""
+ "><primary line=\"1\">5</primary><op line=\"1\""
+ ">&&</op><primary line=\"1\">9</primary></and></expr-list>");
}
@Test
public void testInstanceOf() throws TokenException {
assertStatement("bug237",
"if (a instanceof b){}",
"<if line=\"1\"><condition line=\"1\"><relation line=\"1\"><primary "
+ "line=\"1\">a</primary><op line=\"1\">instanceof</op><primary line=\"1\">"
+ "b</primary></relation></condition><block line=\"1\"></block></if>");
}
@Test
public void testMulExpression() throws TokenException {
assertStatement("1",
"5/6",
"<mul line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">/</op><primary line=\"1\">6</primary></mul>");
}
@Test
public void testNewExpression() throws TokenException {
assertStatement("",
"new Event()",
"<new line=\"1\"><call line=\"1\">"
+ "<primary line=\"1\">Event</primary>"
+ "<arguments line=\"1\"></arguments></call></new>");
assertStatement("",
"new Event(\"lala\")",
"<new line=\"1\"><call line=\"1\">"
+ "<primary line=\"1\">Event</primary>"
+ "<arguments line=\"1\"><primary line=\"1\">"
+ "\"lala\"</primary></arguments></call></new>");
}
@Test
public void testOrExpression() throws TokenException {
assertStatement("1",
"5||6",
"<or line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">||</op><primary line=\"1\">6</primary></or>");
}
@Test
public void testRelationalExpression() throws TokenException {
assertStatement("1",
"5<=6",
"<relation line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">&lt;=</op><primary line=\"1\""
+ ">6</primary></relation>");
}
@Test
public void testShiftExpression() throws TokenException {
assertStatement("1",
"5<<6",
"<shift line=\"1\"><primary line=\"1\">5"
+ "</primary><op line=\"1\">&lt;&lt;</op><primary line=\"1\""
+ ">6</primary></shift>");
}
}