blob: 5f1c1ad8e8417a893bcd091592e2bb8d9b040718 [file] [log] [blame]
/***
* ASM tests
* Copyright (c) 2000-2011 INRIA, France Telecom
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.objectweb.asm;
import java.io.IOException;
import java.io.InputStream;
import junit.framework.TestCase;
/**
* ClassReader unit tests.
*
* @author Eric Bruneton
* @author Eugene Kuleshov
*/
public class ClassReaderUnitTest extends TestCase implements Opcodes {
public void testIllegalConstructorArgument() {
try {
new ClassReader((InputStream) null);
fail();
} catch (IOException e) {
}
}
public void testGetItem() throws IOException {
ClassReader cr = new ClassReader(getClass().getName());
int item = cr.getItem(1);
assertTrue(item >= 10);
assertTrue(item < cr.header);
}
public void testReadByte() throws IOException {
ClassReader cr = new ClassReader(getClass().getName());
assertEquals(cr.b[0] & 0xFF, cr.readByte(0));
}
public void testGetAccess() throws Exception {
String name = getClass().getName();
assertEquals(Opcodes.ACC_PUBLIC | Opcodes.ACC_SUPER, new ClassReader(
name).getAccess());
}
public void testGetClassName() throws Exception {
String name = getClass().getName();
assertEquals(name.replace('.', '/'),
new ClassReader(name).getClassName());
}
public void testGetSuperName() throws Exception {
assertEquals(TestCase.class.getName().replace('.', '/'),
new ClassReader(getClass().getName()).getSuperName());
assertEquals(null,
new ClassReader(Object.class.getName()).getSuperName());
}
public void testGetInterfaces() throws Exception {
String[] interfaces = new ClassReader(getClass().getName())
.getInterfaces();
assertNotNull(interfaces);
assertEquals(1, interfaces.length);
assertEquals(Opcodes.class.getName().replace('.', '/'), interfaces[0]);
interfaces = new ClassReader(Opcodes.class.getName()).getInterfaces();
assertNotNull(interfaces);
}
}