11package software .coley .llzip ;
22
33import org .junit .jupiter .api .Test ;
4- import org .objectweb .asm .ClassReader ;
5- import org .objectweb .asm .ClassVisitor ;
6- import org .objectweb .asm .MethodVisitor ;
7- import org .objectweb .asm .Opcodes ;
84import software .coley .llzip .part .CentralDirectoryFileHeader ;
95import software .coley .llzip .part .LocalFileHeader ;
106import software .coley .llzip .strategy .Decompressor ;
@@ -30,7 +26,7 @@ public void testDeflateStandardJar() {
3026 LocalFileHeader localFileHeader = zip .getLocalFiles ().get (0 );
3127 assertEquals ("Hello.class" , localFileHeader .getFileName ());
3228 byte [] classData = localFileHeader .decompress (new DeflateDecompressor ());
33- assertDefinesString (classData , "Hello world!" );
29+ Utils . assertDefinesString (classData , "Hello world!" );
3430 } catch (IOException ex ) {
3531 fail (ex );
3632 }
@@ -61,13 +57,13 @@ public void testDeflateJvmJar() {
6157 assertEquals ("Hello.class" , redHerringCentralDir .getFileName ());
6258 assertNull ( redHerringCentralDir .getLinkedFileHeader (), "The red herring central directory got linked" );
6359 byte [] redHerringClassData = zip .getLocalFiles ().get (1 ).decompress (new DeflateDecompressor ());
64- assertDefinesString (redHerringClassData , "Hello world!" );
60+ Utils . assertDefinesString (redHerringClassData , "Hello world!" );
6561 // The real class that gets run by the JVM
6662 CentralDirectoryFileHeader jvmCentralDir = zip .getCentralDirectories ().get (3 );
6763 assertEquals ("Hello.class/" , jvmCentralDir .getFileName ());
6864 assertNotEquals ("Hello.class/" , jvmCentralDir .getLinkedFileHeader ().getFileName ());
6965 byte [] classData = jvmCentralDir .getLinkedFileHeader ().decompress (new DeflateDecompressor ());
70- assertDefinesString (classData , "The secret code is: ROSE" );
66+ Utils . assertDefinesString (classData , "The secret code is: ROSE" );
7167 } catch (IOException ex ) {
7268 fail (ex );
7369 }
@@ -84,35 +80,15 @@ public void testDeflateJvmJarWithGarbageHeader() {
8480 CentralDirectoryFileHeader redHerringCentralDir = zip .getCentralDirectories ().get (1 );
8581 assertEquals ("Hello\t .class" , redHerringCentralDir .getFileName ());
8682 byte [] redHerringClassData = redHerringCentralDir .getLinkedFileHeader ().decompress (new DeflateDecompressor ());
87- assertDefinesString (redHerringClassData , "Hello world!" );
83+ Utils . assertDefinesString (redHerringClassData , "Hello world!" );
8884 // The real class that gets run by the JVM
8985 CentralDirectoryFileHeader jvmCentralDir = zip .getCentralDirectories ().get (0 );
9086 assertEquals ("Hello.class/" , jvmCentralDir .getFileName ());
9187 assertNotEquals ("Hello.class/" , jvmCentralDir .getLinkedFileHeader ().getFileName ());
9288 byte [] classData = jvmCentralDir .getLinkedFileHeader ().decompress (new DeflateDecompressor ());
93- assertDefinesString (classData , "The secret code is: ROSE" );
89+ Utils . assertDefinesString (classData , "The secret code is: ROSE" );
9490 } catch (IOException ex ) {
9591 fail (ex );
9692 }
9793 }
98-
99-
100-
101- public static void assertDefinesString (byte [] code , String target ) {
102- boolean [] visited = new boolean [1 ];
103- ClassReader cr = new ClassReader (code );
104- cr .accept (new ClassVisitor (Opcodes .ASM9 ) {
105- @ Override
106- public MethodVisitor visitMethod (int access , String name , String descriptor , String signature , String [] exceptions ) {
107- return new MethodVisitor (Opcodes .ASM9 ) {
108- @ Override
109- public void visitLdcInsn (Object value ) {
110- visited [0 ] = true ;
111- assertEquals (target , value );
112- }
113- };
114- }
115- }, ClassReader .SKIP_FRAMES );
116- assertTrue (visited [0 ], "The entry did not visit any LDC constants" );
117- }
11894}
0 commit comments