/* * 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.signature; import org.junit.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class ParameterSignatureScannerTest { @Test public void testScanVoid() { Parameter param = ParameterSignatureScanner.scan("V"); assertThat(param.isVoid()).isTrue(); } @Test public void testScanObject() { Parameter param = ParameterSignatureScanner.scan("Ljava/lang/String;"); assertThat(param.isOject()).isTrue(); assertThat(param.getClassName()).isEqualTo("String"); } @Test public void testScanSimpleGenericObject() { Parameter param = ParameterSignatureScanner.scan("TU;"); assertThat(param.isOject()).isTrue(); assertThat(param.getClassName()).isEqualTo("U"); } @Test public void testScanComplexGenericObject() { Parameter param = ParameterSignatureScanner.scan("TU<TV;Ljava/util/Map$Entry<TY>>;"); assertThat(param.isOject()).isTrue(); assertThat(param.getClassName()).isEqualTo("U"); } @Test public void testScanInnerClassObject() { Parameter param = ParameterSignatureScanner.scan("LMap$Entry;"); assertThat(param.isOject()).isTrue(); assertThat(param.getClassName()).isEqualTo("Entry"); } @Test public void testScanPrimitiveType() { Parameter param = ParameterSignatureScanner.scan("B"); assertThat(param.isOject()).isFalse(); assertThat(param.getJvmJavaType()).isEqualTo(JvmJavaType.B); } @Test public void testScanArray() { Parameter param = ParameterSignatureScanner.scan("[B"); assertThat(param.isArray()).isTrue(); assertThat(param.getJvmJavaType()).isEqualTo(JvmJavaType.B); param = ParameterSignatureScanner.scan("B"); assertThat(param.isArray()).isFalse(); assertThat(param.getJvmJavaType()).isEqualTo(JvmJavaType.B); param = ParameterSignatureScanner.scan("[LString;"); assertThat(param.isOject()).isTrue(); assertThat(param.getClassName()).isEqualTo("String"); } @Test public void testScanArrayOfArray() { Parameter param = ParameterSignatureScanner.scan("[[[[B"); assertThat(param.isArray()).isTrue(); assertThat(param.getJvmJavaType()).isEqualTo(JvmJavaType.B); } @Test public void testScanSeveralPrimitiveArguments() { List<Parameter> params = ParameterSignatureScanner.scanArguments("BIZ"); assertThat(params.size()).isEqualTo(3); Parameter param1 = params.get(0); assertThat(param1.isOject()).isFalse(); assertThat(param1.getJvmJavaType()).isEqualTo(JvmJavaType.B); } @Test public void testScanSeveralArgumentsWithGeneric() { List<Parameter> params = ParameterSignatureScanner .scanArguments("Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;[Ljava/util/Vector;Ljava/util/ArrayList<Ljava/lang/Integer;>;"); assertThat(params.get(0).isOject()).isTrue(); assertThat(params.get(0).getClassName()).isEqualTo("String"); assertThat(params.get(1).isOject()).isTrue(); assertThat(params.get(1).getClassName()).isEqualTo("List"); assertThat(params.get(2).isOject()).isTrue(); assertThat(params.get(2).isArray()).isTrue(); assertThat(params.get(2).getClassName()).isEqualTo("Vector"); assertThat(params.get(3).isOject()).isTrue(); assertThat(params.get(3).isArray()).isFalse(); assertThat(params.get(3).getClassName()).isEqualTo("ArrayList"); } @Test public void testScanSeveralComplexArguments() { List<Parameter> params = ParameterSignatureScanner.scanArguments("B[LString;IZ"); assertThat(params.size()).isEqualTo(4); Parameter param1 = params.get(0); assertThat(param1.isOject()).isFalse(); assertThat(param1.getJvmJavaType()).isEqualTo(JvmJavaType.B); Parameter param2 = params.get(1); assertThat(param2.isOject()).isTrue(); assertThat(param2.getClassName()).isEqualTo("String"); Parameter param3 = params.get(2); assertThat(param3.isOject()).isFalse(); assertThat(param3.getJvmJavaType()).isEqualTo(JvmJavaType.I); } }