/*
* SonarQube Java
* Copyright (C) 2012-2016 SonarSource SA
* mailto:contact AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.java.model;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.sonar.java.ast.api.JavaKeyword;
import org.sonar.java.ast.api.JavaPunctuator;
import org.sonar.java.ast.api.JavaTokenType;
import org.sonar.plugins.java.api.tree.Modifier;
import org.sonar.plugins.java.api.tree.Tree;
import static org.assertj.core.api.Assertions.assertThat;
public class KindMapsTest {
private final KindMaps kindMaps = new KindMaps();
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void literals() {
assertThat(kindMaps.getLiteral(JavaTokenType.INTEGER_LITERAL)).isSameAs(Tree.Kind.INT_LITERAL);
assertThat(kindMaps.getLiteral(JavaTokenType.LONG_LITERAL)).isSameAs(Tree.Kind.LONG_LITERAL);
assertThat(kindMaps.getLiteral(JavaTokenType.FLOAT_LITERAL)).isSameAs(Tree.Kind.FLOAT_LITERAL);
assertThat(kindMaps.getLiteral(JavaTokenType.DOUBLE_LITERAL)).isSameAs(Tree.Kind.DOUBLE_LITERAL);
assertThat(kindMaps.getLiteral(JavaKeyword.TRUE)).isSameAs(Tree.Kind.BOOLEAN_LITERAL);
assertThat(kindMaps.getLiteral(JavaKeyword.FALSE)).isSameAs(Tree.Kind.BOOLEAN_LITERAL);
assertThat(kindMaps.getLiteral(JavaTokenType.CHARACTER_LITERAL)).isSameAs(Tree.Kind.CHAR_LITERAL);
assertThat(kindMaps.getLiteral(JavaTokenType.STRING_LITERAL)).isSameAs(Tree.Kind.STRING_LITERAL);
assertThat(kindMaps.getLiteral(JavaKeyword.NULL)).isSameAs(Tree.Kind.NULL_LITERAL);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for literal null");
kindMaps.getLiteral(null);
}
@Test
public void modifiers() {
assertThat(kindMaps.getModifier(JavaKeyword.PUBLIC)).isSameAs(Modifier.PUBLIC);
assertThat(kindMaps.getModifier(JavaKeyword.PROTECTED)).isSameAs(Modifier.PROTECTED);
assertThat(kindMaps.getModifier(JavaKeyword.PRIVATE)).isSameAs(Modifier.PRIVATE);
assertThat(kindMaps.getModifier(JavaKeyword.ABSTRACT)).isSameAs(Modifier.ABSTRACT);
assertThat(kindMaps.getModifier(JavaKeyword.STATIC)).isSameAs(Modifier.STATIC);
assertThat(kindMaps.getModifier(JavaKeyword.FINAL)).isSameAs(Modifier.FINAL);
assertThat(kindMaps.getModifier(JavaKeyword.TRANSIENT)).isSameAs(Modifier.TRANSIENT);
assertThat(kindMaps.getModifier(JavaKeyword.VOLATILE)).isSameAs(Modifier.VOLATILE);
assertThat(kindMaps.getModifier(JavaKeyword.SYNCHRONIZED)).isSameAs(Modifier.SYNCHRONIZED);
assertThat(kindMaps.getModifier(JavaKeyword.NATIVE)).isSameAs(Modifier.NATIVE);
assertThat(kindMaps.getModifier(JavaKeyword.STRICTFP)).isSameAs(Modifier.STRICTFP);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for modifier null");
kindMaps.getModifier(null);
}
@Test
public void prefix_operators() {
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.INC)).isSameAs(Tree.Kind.PREFIX_INCREMENT);
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.DEC)).isSameAs(Tree.Kind.PREFIX_DECREMENT);
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.PLUS)).isSameAs(Tree.Kind.UNARY_PLUS);
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.MINUS)).isSameAs(Tree.Kind.UNARY_MINUS);
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.TILDA)).isSameAs(Tree.Kind.BITWISE_COMPLEMENT);
assertThat(kindMaps.getPrefixOperator(JavaPunctuator.BANG)).isSameAs(Tree.Kind.LOGICAL_COMPLEMENT);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for prefix operator null");
kindMaps.getPrefixOperator(null);
}
@Test
public void postfix_operators() {
assertThat(kindMaps.getPostfixOperator(JavaPunctuator.INC)).isSameAs(Tree.Kind.POSTFIX_INCREMENT);
assertThat(kindMaps.getPostfixOperator(JavaPunctuator.DEC)).isSameAs(Tree.Kind.POSTFIX_DECREMENT);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for postfix operator null");
kindMaps.getPostfixOperator(null);
}
@Test
public void binary_operators() {
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.STAR)).isSameAs(Tree.Kind.MULTIPLY);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.DIV)).isSameAs(Tree.Kind.DIVIDE);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.MOD)).isSameAs(Tree.Kind.REMAINDER);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.PLUS)).isSameAs(Tree.Kind.PLUS);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.MINUS)).isSameAs(Tree.Kind.MINUS);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.SL)).isSameAs(Tree.Kind.LEFT_SHIFT);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.SR)).isSameAs(Tree.Kind.RIGHT_SHIFT);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.BSR)).isSameAs(Tree.Kind.UNSIGNED_RIGHT_SHIFT);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.LT)).isSameAs(Tree.Kind.LESS_THAN);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.GT)).isSameAs(Tree.Kind.GREATER_THAN);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.LE)).isSameAs(Tree.Kind.LESS_THAN_OR_EQUAL_TO);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.GE)).isSameAs(Tree.Kind.GREATER_THAN_OR_EQUAL_TO);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.EQUAL)).isSameAs(Tree.Kind.EQUAL_TO);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.NOTEQUAL)).isSameAs(Tree.Kind.NOT_EQUAL_TO);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.AND)).isSameAs(Tree.Kind.AND);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.HAT)).isSameAs(Tree.Kind.XOR);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.OR)).isSameAs(Tree.Kind.OR);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.ANDAND)).isSameAs(Tree.Kind.CONDITIONAL_AND);
assertThat(kindMaps.getBinaryOperator(JavaPunctuator.OROR)).isSameAs(Tree.Kind.CONDITIONAL_OR);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for binary operator null");
kindMaps.getBinaryOperator(null);
}
@Test
public void assignment_operators() {
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.EQU)).isSameAs(Tree.Kind.ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.STAREQU)).isSameAs(Tree.Kind.MULTIPLY_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.DIVEQU)).isSameAs(Tree.Kind.DIVIDE_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.MODEQU)).isSameAs(Tree.Kind.REMAINDER_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.PLUSEQU)).isSameAs(Tree.Kind.PLUS_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.MINUSEQU)).isSameAs(Tree.Kind.MINUS_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.SLEQU)).isSameAs(Tree.Kind.LEFT_SHIFT_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.SREQU)).isSameAs(Tree.Kind.RIGHT_SHIFT_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.BSREQU)).isSameAs(Tree.Kind.UNSIGNED_RIGHT_SHIFT_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.ANDEQU)).isSameAs(Tree.Kind.AND_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.HATEQU)).isSameAs(Tree.Kind.XOR_ASSIGNMENT);
assertThat(kindMaps.getAssignmentOperator(JavaPunctuator.OREQU)).isSameAs(Tree.Kind.OR_ASSIGNMENT);
thrown.expect(NullPointerException.class);
thrown.expectMessage("Mapping not found for assignment operator null");
kindMaps.getAssignmentOperator(null);
}
}