diff options
Diffstat (limited to 'libjava/classpath/test/gnu.java.lang.reflect')
3 files changed, 202 insertions, 0 deletions
diff --git a/libjava/classpath/test/gnu.java.lang.reflect/.cvsignore b/libjava/classpath/test/gnu.java.lang.reflect/.cvsignore new file mode 100644 index 0000000..70845e0 --- /dev/null +++ b/libjava/classpath/test/gnu.java.lang.reflect/.cvsignore @@ -0,0 +1 @@ +Makefile.in diff --git a/libjava/classpath/test/gnu.java.lang.reflect/Makefile.am b/libjava/classpath/test/gnu.java.lang.reflect/Makefile.am new file mode 100644 index 0000000..fa98724 --- /dev/null +++ b/libjava/classpath/test/gnu.java.lang.reflect/Makefile.am @@ -0,0 +1,5 @@ +## Input file for automake to generate the Makefile.in used by configure + +JAVAROOT = . + +check_JAVA = TypeSignatureTest.java diff --git a/libjava/classpath/test/gnu.java.lang.reflect/TypeSignatureTest.java b/libjava/classpath/test/gnu.java.lang.reflect/TypeSignatureTest.java new file mode 100644 index 0000000..bd3465d --- /dev/null +++ b/libjava/classpath/test/gnu.java.lang.reflect/TypeSignatureTest.java @@ -0,0 +1,196 @@ +/************************************************************************* +/* TypeSignatureTest.java -- Tests TypeSignature class +/* +/* Copyright (c) 1998 by Free Software Foundation, Inc. +/* +/* This program is free software; you can redistribute it and/or modify +/* it under the terms of the GNU General Public License as published +/* by the Free Software Foundation, version 2. (see COPYING) +/* +/* 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 General Public License for more details. +/* +/* You should have received a copy of the GNU 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 +/*************************************************************************/ + + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.lang.reflect.Member; + +import gnu.java.lang.reflect.TypeSignature; + +public class TypeSignatureTest +{ + public static void pass() + { + System.out.print( "PASSED: " ); + } + + public static void fail() + { + System.out.print( "FAILED: " ); + } + + public static void testClass( Class clazz, String type_code ) + { + if( TypeSignature.getEncodingOfClass( clazz ).equals( type_code ) ) + pass(); + else + fail(); + + System.out.println( "class encoding of " + clazz ); + } + + public static void testGetClass( Class clazz, String type_code ) + throws ClassNotFoundException + { + if( TypeSignature.getClassForEncoding( type_code ).equals( clazz ) ) + pass(); + else + fail(); + + System.out.println( "class from encoding " + type_code ); + } + + public static void testConstructor( Constructor c, String type_code ) + { + if( TypeSignature.getEncodingOfConstructor( c ).equals( type_code ) ) + pass(); + else + fail(); + + System.out.println( "constructor encoding of " + c ); + } + + public static void testMethod( Method m, String type_code ) + { + if( TypeSignature.getEncodingOfMethod( m ).equals( type_code ) ) + pass(); + else + fail(); + + System.out.println( "method encoding of " + m ); + } + + public static void testMember( Member m, String type_code ) + { + if( TypeSignature.getEncodingOfMember( m ).equals( type_code ) ) + pass(); + else + fail(); + + System.out.println( "member encoding of " + m ); + } + + public static void main( String[] args ) + { + try + { + // test getEncodingOfClass + testClass( Boolean.TYPE, "Z" ); + testClass( Byte.TYPE, "B" ); + testClass( Character.TYPE, "C" ); + testClass( Double.TYPE, "D" ); + testClass( Float.TYPE, "F" ); + testClass( Integer.TYPE, "I" ); + testClass( Long.TYPE, "J" ); + testClass( Short.TYPE, "S" ); + testClass( (new int[] {}).getClass(), "[I" ); + testClass( (new float[][][] {}).getClass(), "[[[F" ); + testClass( String.class, "Ljava/lang/String;" ); + testClass( TypeSignatureTest.class, "LTypeSignatureTest;" ); + + // test named inner-class + TypeSignatureTest tst = new TypeSignatureTest(); + Inner i = tst.new Inner(); + testClass( i.getClass(), + "LTypeSignatureTest$Inner;" ); + + // test anonymous inner-class + Anon anon = new Anon() { public void f() {} }; + testClass( anon.getClass(), "LTypeSignatureTest$1;" ); + + //test getEncodingOfConstructor + testConstructor( String.class.getConstructor( new Class[] {} ), + "()V" ); + testConstructor( + String.class.getConstructor( new Class[] + { (new byte[]{}).getClass() } ), + "([B)V" ); + + testConstructor( + String.class.getConstructor( new Class[] { StringBuffer.class } ), + "(Ljava/lang/StringBuffer;)V" ); + + // test getEncodingOfMethod + testMethod( + String.class.getMethod( "lastIndexOf", + new Class[] { Integer.TYPE, Integer.TYPE } ), + "(II)I" ); + + testMethod( + String.class.getMethod( "length", new Class[] {} ), + "()I" ); + + testMethod( + TypeSignatureTest.class.getMethod( "pass", new Class[] {} ), + "()V" ); + + testMember( + TypeSignatureTest.class.getField( "i" ), + "I" ); + + testMember( + TypeSignatureTest.class.getField( "s" ), + "Ljava/lang/String;" ); + + testMember( + TypeSignatureTest.class.getField( "o" ), + "[[Ljava/lang/Object;" ); + + // test getClassForEncoding + testGetClass( Boolean.TYPE, "Z" ); + testGetClass( Byte.TYPE, "B" ); + testGetClass( Character.TYPE, "C" ); + testGetClass( Double.TYPE, "D" ); + testGetClass( Float.TYPE, "F" ); + testGetClass( Integer.TYPE, "I" ); + testGetClass( Long.TYPE, "J" ); + testGetClass( Short.TYPE, "S" ); + testGetClass( (new int[] {}).getClass(), "[I" ); + testGetClass( (new float[][][] {}).getClass(), "[[[F" ); + testGetClass( String.class, "Ljava/lang/String;" ); + testGetClass( TypeSignatureTest.class, "LTypeSignatureTest;" ); + + // test named inner-class + testGetClass( i.getClass(), + "LTypeSignatureTest$Inner;" ); + + // test anonymous inner-class + testGetClass( anon.getClass(), "LTypeSignatureTest$1;" ); + } + catch( Exception e ) + { + e.printStackTrace(); + } + } + + public int i; + public String s; + public Object[][] o; + + + class Inner + {} +} + + +interface Anon +{ + public void f(); +} |