blob: 1f1d5b194c5ad2fa14b2c40010e81bfc911a8efc [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 TestUnaryExpression extends AbstractStatementTestBase {
@Test
public void testArrayAccess() throws TokenException {
assertStatement("1",
"x[0]",
"<arr-acc line=\"1\"><primary line=\"1\">x<"
+ "/primary><primary line=\"1\">0</primary></arr-acc>");
}
@Test
public void testComplex() throws TokenException {
assertStatement("1",
"a.b['c'].d.e(1)",
"<dot line=\"1\"><primary line=\"1\">a"
+ "</primary><dot line=\"1\"><arr-acc line=\"1\">"
+ "<primary line=\"1\">b</primary><primary line=\"1\">"
+ "'c'</primary></arr-acc><dot line=\"1\"><primary line=\"1\">"
+ "d</primary><call line=\"1\"><primary line=\"1\">e"
+ "</primary><arguments line=\"1\"><primary line=\"1\">1"
+ "</primary></arguments></call></dot></dot></dot>");
assertStatement("2",
"a.b['c']['d'].e(1)",
"<dot line=\"1\"><primary line=\"1\">a"
+ "</primary><dot line=\"1\"><arr-acc line=\"1\">"
+ "<primary line=\"1\">b</primary><primary line=\"1\">"
+ "'c'</primary><primary line=\"1\">'d'</primary>"
+ "</arr-acc><call line=\"1\"><primary line=\"1\">"
+ "e</primary><arguments line=\"1\"><primary line=\"1\">1"
+ "</primary></arguments></call></dot></dot>");
}
@Test
public void testMethodCall() throws TokenException {
assertStatement("1",
"method()",
"<call line=\"1\"><primary line=\"1\">"
+ "method</primary><arguments line=\"1\"></arguments></call>");
assertStatement("2",
"method( 1, \"two\" )",
"<call line=\"1\"><primary line=\"1\">"
+ "method</primary><arguments line=\"1\"><primary line=\"1\">1"
+ "</primary><primary line=\"1\">\"two\"</primary></arguments></call>");
}
@Test
public void testMultipleMethodCall() throws TokenException {
assertStatement("1",
"method()()",
"<call line=\"1\"><primary line=\"1\">"
+ "method</primary><arguments line=\"1\"></arguments>"
+ "<arguments line=\"1\"></arguments></call>");
}
@Test
public void testParseUnaryExpressions() throws TokenException {
assertStatement("1",
"++x",
"<pre-inc line=\"1\"><primary line=\"1\">x</primary></pre-inc>");
assertStatement("2",
"x++",
"<post-inc line=\"2\"><primary line=\"1\">x</primary></post-inc>");
assertStatement("3",
"--x",
"<pre-dec line=\"1\"><primary line=\"1\">x</primary></pre-dec>");
assertStatement("4",
"x--",
"<post-dec line=\"2\"><primary line=\"1\">x</primary></post-dec>");
assertStatement("5",
"+x",
"<plus line=\"1\"><primary line=\"1\">x</primary></plus>");
assertStatement("6",
"+ x",
"<plus line=\"1\"><primary line=\"1\">x</primary></plus>");
assertStatement("7",
"-x",
"<minus line=\"1\"><primary line=\"1\">x</primary></minus>");
assertStatement("8",
"- x",
"<minus line=\"1\"><primary line=\"1\">x</primary></minus>");
assertStatement("9",
"delete x",
"<delete line=\"1\"><primary line=\"1\">x</primary></delete>");
assertStatement("a",
"void x",
"<void line=\"1\"><primary line=\"1\">x</primary></void>");
assertStatement("b",
"typeof x",
"<typeof line=\"1\"><primary line=\"1\">x</primary></typeof>");
assertStatement("c",
"! x",
"<not line=\"1\"><primary line=\"1\">x</primary></not>");
assertStatement("d",
"~ x",
"<b-not line=\"1\"><primary line=\"1\">x</primary></b-not>");
assertStatement("e",
"x++",
"<post-inc line=\"2\"><primary line=\"1\">x</primary></post-inc>");
assertStatement("f",
"x--",
"<post-dec line=\"2\"><primary line=\"1\">x</primary></post-dec>");
}
}