1 30 package org.objectweb.asm.xml; 31 32 import java.io.ByteArrayOutputStream ; 33 import java.io.IOException ; 34 35 import org.objectweb.asm.ClassVisitor; 36 import org.objectweb.asm.MethodVisitor; 37 import org.objectweb.asm.Opcodes; 38 import org.xml.sax.SAXException ; 39 import org.xml.sax.helpers.AttributesImpl ; 40 41 import junit.framework.TestCase; 42 43 48 public class ASMContentHandlerUnitTest extends TestCase implements Opcodes { 49 50 ASMContentHandler h; 51 52 ClassVisitor cv; 53 54 MethodVisitor mv; 55 56 protected void setUp() throws Exception { 57 h = new ASMContentHandler(new ByteArrayOutputStream () { 58 public void write(final byte[] b) throws IOException { 59 throw new IOException (); 60 } 61 }, false); 62 cv = new SAXClassAdapter(h, true); 63 cv.visit(V1_5, ACC_PUBLIC, "C", null, "java/lang/Object", null); 64 } 65 66 protected void methodSetUp() { 67 mv = cv.visitMethod(0, "<init>", "()V", null, null); 68 mv.visitCode(); 69 mv.visitVarInsn(ALOAD, 0); 70 mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); 71 } 72 73 public void testInvalidOpcode() { 74 methodSetUp(); 75 AttributesImpl attrs = new AttributesImpl (); 76 try { 77 h.startElement("", "opcode", "", attrs); 78 h.endElement("", "opcode", ""); 79 fail(); 80 } catch (SAXException e) { 81 } 82 } 83 84 public void testInvalidValueDescriptor() { 85 methodSetUp(); 86 AttributesImpl attrs = new AttributesImpl (); 87 attrs.addAttribute("", "desc", "desc", "", "desc"); 88 attrs.addAttribute("", "cst", "cst", "", ""); 89 try { 90 h.startElement("", "LDC", "", attrs); 91 h.endElement("", "LDC", ""); 92 fail(); 93 } catch (SAXException e) { 94 } 95 } 96 97 public void testInvalidValue() { 98 methodSetUp(); 99 AttributesImpl attrs = new AttributesImpl (); 100 attrs.addAttribute("", "desc", "desc", "", "Ljava/lang/String;"); 101 attrs.addAttribute("", "cst", "cst", "", "\\"); 102 try { 103 h.startElement("", "LDC", "", attrs); 104 h.endElement("", "LDC", ""); 105 fail(); 106 } catch (SAXException e) { 107 } 108 } 109 110 public void testIOException() { 111 cv.visitEnd(); 112 try { 113 h.endDocument(); 114 } catch (SAXException e) { 115 } 116 } 117 } 118 | Popular Tags |