Skip to content

Commit d0c9e86

Browse files
alxkmilayaperumalg
authored andcommitted
test: improve KnuddelsRuntimeHints test coverage
Co-authored-by: Oleksandr Klymenko <[email protected]> Signed-off-by: Oleksandr Klymenko <[email protected]>
1 parent ff99869 commit d0c9e86

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

spring-ai-model/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)