⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testgenericobjecttype.java

📁 A static analysis tool to find bugs in Java programs
💻 JAVA
字号:
/* * FindBugs - Find Bugs in Java programs * Copyright (C) 2006, University of Maryland *  * This library 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 2.1 of the License, or (at your option) any later version. *  * This library 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 library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package edu.umd.cs.findbugs.ba.generic;import java.util.Arrays;import java.util.List;import junit.framework.TestCase;import org.apache.bcel.generic.ObjectType;import org.apache.bcel.generic.ReferenceType;import org.apache.bcel.generic.Type;import edu.umd.cs.findbugs.ba.generic.GenericUtilities.TypeCategory;/** * @author Nat Ayewah */public class TestGenericObjectType extends TestCase {	GenericObjectType obj;	String javaSignature;	String underlyingClass;	GenericUtilities.TypeCategory typeCategory;	String variable;	Type extension;	List<ReferenceType> parameters;	public void initTest(			String bytecodeSignature, 			String javaSignature, 			String underlyingClass, 			GenericUtilities.TypeCategory typeCategory, 			String variable, 			Type extension, 			List<ReferenceType> parameters) {		this.obj = (GenericObjectType) GenericUtilities.getType(bytecodeSignature);		this.javaSignature = javaSignature;		this.underlyingClass = underlyingClass;		this.typeCategory = typeCategory;		this.variable = variable;		this.extension = extension;		this.parameters = parameters;	}	public void processTest() {		assertEquals(obj.toString(true), javaSignature);		assertEquals(obj.getClassName(), underlyingClass);		assertEquals(obj.getTypeCategory(), typeCategory);		if (typeCategory == TypeCategory.PARAMETERS) {			assertTrue(obj.hasParameters());			assertTrue(obj.getNumParameters() == parameters.size());			for (int i=0; i<obj.getNumParameters(); i++)				compareTypes(obj.getParameterAt(i), parameters.get(i));			assertNull(obj.getVariable());			assertNull(obj.getExtension());		}else if (typeCategory == TypeCategory.TYPE_VARIABLE) { 			assertFalse(obj.hasParameters());			assertNull(obj.getExtension());			assertNotNull(obj.getVariable());			assertEquals(obj.getVariable(), variable);		}else if (typeCategory == TypeCategory.WILDCARD) { 			assertFalse(obj.hasParameters());			assertNull(obj.getExtension());			assertNotNull(obj.getVariable());			assertEquals(obj.getVariable(), "*");		} else if (typeCategory == TypeCategory.WILDCARD_EXTENDS || typeCategory == TypeCategory.WILDCARD_SUPER) { 			assertFalse(obj.hasParameters());			assertNotNull(obj.getExtension());			assertNotNull(obj.getVariable());			assertEquals(obj.getVariable(), variable);			compareTypes(obj.getExtension(), extension);		}	}	private void compareTypes(Type a, Type b) {		assertEquals(a, b);		if (a instanceof GenericObjectType || b instanceof GenericObjectType) {			assertTrue(a instanceof GenericObjectType && b instanceof GenericObjectType);			assertEquals( 					((GenericObjectType)a).toString(true), 					((GenericObjectType)b).toString(true)					);		}			}	public void testParameterizedList() {		initTest(				"Ljava/util/List<Ljava/lang/Comparable;>;", 				"java.util.List<java.lang.Comparable>", 				"java.util.List", 				GenericUtilities.TypeCategory.PARAMETERS, 				null, 				null,				GenericUtilities.getTypes("Ljava/lang/Comparable;")			);		processTest();	}	public void testCreateTypes() {		initTest(				"LDummyClass<Ljava/lang/Comparable;TE;>;", 				"DummyClass<java.lang.Comparable,E>", 				"DummyClass", 				GenericUtilities.TypeCategory.PARAMETERS, 				null, 				null,				Arrays.asList(						(ReferenceType) GenericUtilities.getType("Ljava/lang/Comparable;"),						(ReferenceType) GenericUtilities.getType("TE;")				)			);		processTest();	}	public void testTypeVariables() {		initTest(				"TE;", 				"E", 				"java.lang.Object", 				GenericUtilities.TypeCategory.TYPE_VARIABLE, 				"E", 				null,				null			);		processTest();		initTest(				"*", 				"?", 				"java.lang.Object", 				GenericUtilities.TypeCategory.WILDCARD, 				"*", 				null,				null			);		processTest();		initTest(				"+TE;", 				"? extends E", 				"java.lang.Object", 				GenericUtilities.TypeCategory.WILDCARD_EXTENDS, 				"+", 				GenericUtilities.getType("TE;"),				null			);		processTest();		initTest(				"-TE;", 				"? super E", 				"java.lang.Object", 				GenericUtilities.TypeCategory.WILDCARD_SUPER, 				"-", 				GenericUtilities.getType("TE;"),				null			);		processTest();		initTest(				"-[TE;", 				"? super E[]", 				"java.lang.Object", 				GenericUtilities.TypeCategory.WILDCARD_SUPER, 				"-", 				GenericUtilities.getType("[TE;"),				null			);		processTest();	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -