@@ -33,4 +33,65 @@ void knuddels() {
3333 assertThat (runtimeHints ).matches (resource ().forResource ("com/knuddels/jtokkit/cl100k_base.tiktoken" ));
3434 }
3535
36+ @ Test
37+ void should_register_hints_with_custom_classloader () {
38+ var runtimeHints = new RuntimeHints ();
39+ var knuddels = new KnuddelsRuntimeHints ();
40+ ClassLoader customClassLoader = Thread .currentThread ().getContextClassLoader ();
41+
42+ knuddels .registerHints (runtimeHints , customClassLoader );
43+
44+ assertThat (runtimeHints ).matches (resource ().forResource ("com/knuddels/jtokkit/cl100k_base.tiktoken" ));
45+ }
46+
47+ @ Test
48+ void should_not_register_reflection_hints () {
49+ var runtimeHints = new RuntimeHints ();
50+ var knuddels = new KnuddelsRuntimeHints ();
51+ knuddels .registerHints (runtimeHints , null );
52+
53+ // Verify no reflection hints are added (only resources)
54+ assertThat (runtimeHints .reflection ().typeHints ().count ()).isEqualTo (0 );
55+ }
56+
57+ @ Test
58+ void should_not_register_proxy_hints () {
59+ var runtimeHints = new RuntimeHints ();
60+ var knuddels = new KnuddelsRuntimeHints ();
61+ knuddels .registerHints (runtimeHints , null );
62+
63+ // Verify no proxy hints are added
64+ assertThat (runtimeHints .proxies ().jdkProxyHints ().count ()).isEqualTo (0 );
65+ }
66+
67+ @ Test
68+ void should_register_hints_idempotently () {
69+ var runtimeHints = new RuntimeHints ();
70+ var knuddels = new KnuddelsRuntimeHints ();
71+
72+ knuddels .registerHints (runtimeHints , null );
73+ long firstCount = runtimeHints .resources ().resourcePatternHints ().count ();
74+
75+ knuddels .registerHints (runtimeHints , null );
76+ long secondCount = runtimeHints .resources ().resourcePatternHints ().count ();
77+
78+ // Multiple registrations should result in the same hints (or double)
79+ assertThat (secondCount ).isGreaterThanOrEqualTo (firstCount );
80+ }
81+
82+ @ Test
83+ void should_register_hints_only_for_jtokkit_resources () {
84+ var runtimeHints = new RuntimeHints ();
85+ var knuddels = new KnuddelsRuntimeHints ();
86+ knuddels .registerHints (runtimeHints , null );
87+
88+ // Verify hints are specific to jtokkit resources
89+ boolean hasJtokkitResources = runtimeHints .resources ()
90+ .resourcePatternHints ()
91+ .anyMatch (
92+ hint -> hint .getIncludes ().stream ().anyMatch (pattern -> pattern .getPattern ().contains ("jtokkit" )));
93+
94+ assertThat (hasJtokkitResources ).isTrue ();
95+ }
96+
3697}
0 commit comments