@@ -44,4 +44,84 @@ void registerHints() {
44
44
.matches (resource ().forResource ("/org/apache/pdfbox/resources/version.properties" ));
45
45
}
46
46
47
+ @ Test
48
+ void registerHintsWithNullRuntimeHints () {
49
+ // Test null safety for RuntimeHints parameter
50
+ PdfReaderRuntimeHints pdfReaderRuntimeHints = new PdfReaderRuntimeHints ();
51
+
52
+ Assertions .assertThatThrownBy (() -> pdfReaderRuntimeHints .registerHints (null , null ))
53
+ .isInstanceOf (NullPointerException .class );
54
+ }
55
+
56
+ @ Test
57
+ void registerHintsMultipleTimes () {
58
+ // Test that multiple calls don't cause issues (idempotent behavior)
59
+ RuntimeHints runtimeHints = new RuntimeHints ();
60
+ PdfReaderRuntimeHints pdfReaderRuntimeHints = new PdfReaderRuntimeHints ();
61
+
62
+ // Register hints multiple times
63
+ pdfReaderRuntimeHints .registerHints (runtimeHints , null );
64
+ pdfReaderRuntimeHints .registerHints (runtimeHints , null );
65
+
66
+ // Should still work correctly
67
+ Assertions .assertThat (runtimeHints )
68
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/zapfdingbats.txt" ));
69
+ Assertions .assertThat (runtimeHints )
70
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/glyphlist.txt" ));
71
+ Assertions .assertThat (runtimeHints )
72
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/version.properties" ));
73
+ }
74
+
75
+ @ Test
76
+ void verifyAllExpectedResourcesRegistered () {
77
+ // Test that all necessary PDFBox resources are registered
78
+ RuntimeHints runtimeHints = new RuntimeHints ();
79
+ PdfReaderRuntimeHints pdfReaderRuntimeHints = new PdfReaderRuntimeHints ();
80
+ pdfReaderRuntimeHints .registerHints (runtimeHints , null );
81
+
82
+ // Core glyph list resources
83
+ Assertions .assertThat (runtimeHints )
84
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/zapfdingbats.txt" ));
85
+ Assertions .assertThat (runtimeHints )
86
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/glyphlist.txt" ));
87
+
88
+ // Version properties
89
+ Assertions .assertThat (runtimeHints )
90
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/version.properties" ));
91
+
92
+ // Test that uncommented resource patterns are NOT registered (if they shouldn't
93
+ // be)
94
+ // This validates the current implementation only registers what's needed
95
+ }
96
+
97
+ @ Test
98
+ void verifyClassLoaderContextParameterIgnored () {
99
+ // Test that the ClassLoader parameter doesn't affect resource registration
100
+ RuntimeHints runtimeHints1 = new RuntimeHints ();
101
+ RuntimeHints runtimeHints2 = new RuntimeHints ();
102
+ PdfReaderRuntimeHints pdfReaderRuntimeHints = new PdfReaderRuntimeHints ();
103
+
104
+ // Register with null ClassLoader
105
+ pdfReaderRuntimeHints .registerHints (runtimeHints1 , null );
106
+
107
+ // Register with current ClassLoader
108
+ pdfReaderRuntimeHints .registerHints (runtimeHints2 , getClass ().getClassLoader ());
109
+
110
+ // Both should have the same resources registered
111
+ Assertions .assertThat (runtimeHints1 )
112
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/zapfdingbats.txt" ));
113
+ Assertions .assertThat (runtimeHints2 )
114
+ .matches (resource ().forResource ("/org/apache/pdfbox/resources/glyphlist/zapfdingbats.txt" ));
115
+ }
116
+
117
+ @ Test
118
+ void verifyRuntimeHintsRegistrationInterface () {
119
+ // Test that PdfReaderRuntimeHints properly implements RuntimeHintsRegistrar
120
+ PdfReaderRuntimeHints pdfReaderRuntimeHints = new PdfReaderRuntimeHints ();
121
+
122
+ // Verify it's a RuntimeHintsRegistrar
123
+ Assertions .assertThat (pdfReaderRuntimeHints )
124
+ .isInstanceOf (org .springframework .aot .hint .RuntimeHintsRegistrar .class );
125
+ }
126
+
47
127
}
0 commit comments