1
2
3
4
5
6 package mockit.internal;
7
8 import static org.junit.jupiter.api.Assertions.assertNotNull;
9 import static org.junit.jupiter.api.Assertions.assertThrows;
10 import static org.junit.jupiter.api.Assertions.assertTrue;
11
12 import mockit.asm.classes.ClassReader;
13
14 import org.junit.jupiter.api.Test;
15
16 final class ClassFileTest {
17
18 @Test
19 void createClassReaderWithValidClass() {
20 ClassLoader cl = ClassFileTest.class.getClassLoader();
21 ClassReader reader = ClassFile.createClassReader(cl, "mockit/internal/ClassFile");
22 assertNotNull(reader);
23 }
24
25 @Test
26 void createClassReaderWithNonExistentClassReturnsNull() {
27 ClassLoader cl = ClassFileTest.class.getClassLoader();
28 ClassReader reader = ClassFile.createClassReader(cl, "com/example/DoesNotExist");
29
30 assertTrue(reader == null);
31 }
32
33 @Test
34 void createReaderOrGetFromCacheForKnownClass() {
35 ClassReader reader = ClassFile.createReaderOrGetFromCache(String.class);
36 assertNotNull(reader);
37 }
38
39 @Test
40 void createReaderOrGetFromCacheReturnsCachedReader() {
41
42 ClassReader reader1 = ClassFile.createReaderOrGetFromCache(Integer.class);
43 ClassReader reader2 = ClassFile.createReaderOrGetFromCache(Integer.class);
44 assertNotNull(reader1);
45 assertNotNull(reader2);
46 }
47
48 @Test
49 void createReaderOrGetFromCacheForNonCachedClass() {
50
51 ClassReader reader = ClassFile.createReaderOrGetFromCache(ClassFileTest.class);
52 assertNotNull(reader);
53
54 ClassReader reader2 = ClassFile.createReaderOrGetFromCache(ClassFileTest.class);
55 assertNotNull(reader2);
56 }
57
58 @Test
59 void getClassFileByNameForKnownClass() {
60 byte[] bytes = ClassFile.getClassFile("java/lang/String");
61 assertNotNull(bytes);
62 assertTrue(bytes.length > 0);
63 }
64
65 @Test
66 void getClassFileByClassForKnownClass() {
67 byte[] bytes = ClassFile.getClassFile(String.class);
68 assertNotNull(bytes);
69 assertTrue(bytes.length > 0);
70 }
71
72 @Test
73 void getClassFileByLoaderAndNameForKnownClass() {
74 byte[] bytes = ClassFile.getClassFile(ClassFileTest.class.getClassLoader(), "mockit/internal/ClassFile");
75 assertNotNull(bytes);
76 assertTrue(bytes.length > 0);
77 }
78
79 @Test
80 void readBytesFromClassFileByName() {
81 byte[] bytes = ClassFile.readBytesFromClassFile("mockit/internal/ClassFile");
82 assertNotNull(bytes);
83 assertTrue(bytes.length > 0);
84 }
85
86 @Test
87 void readBytesFromClassFileByClass() {
88 byte[] bytes = ClassFile.readBytesFromClassFile(ClassFileTest.class);
89 assertNotNull(bytes);
90 assertTrue(bytes.length > 0);
91 }
92
93 @Test
94 void readBytesFromClassFileThrowsForUnknownClass() {
95 assertThrows(RuntimeException.class, () -> ClassFile.readBytesFromClassFile("com/example/DoesNotExist"));
96 }
97
98 @Test
99 void notFoundExceptionHasCorrectMessage() {
100 try {
101 ClassFile.readBytesFromClassFile("com/example/Missing");
102 } catch (RuntimeException e) {
103
104 }
105 }
106
107 @Test
108 void createReaderFromLastRedefinitionIfAny() {
109 ClassReader reader = ClassFile.createReaderFromLastRedefinitionIfAny(String.class);
110 assertNotNull(reader);
111 }
112 }