Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,65 @@ void knuddels() {
assertThat(runtimeHints).matches(resource().forResource("com/knuddels/jtokkit/cl100k_base.tiktoken"));
}

@Test
void should_register_hints_with_custom_classloader() {
var runtimeHints = new RuntimeHints();
var knuddels = new KnuddelsRuntimeHints();
ClassLoader customClassLoader = Thread.currentThread().getContextClassLoader();

knuddels.registerHints(runtimeHints, customClassLoader);

assertThat(runtimeHints).matches(resource().forResource("com/knuddels/jtokkit/cl100k_base.tiktoken"));
}

@Test
void should_not_register_reflection_hints() {
var runtimeHints = new RuntimeHints();
var knuddels = new KnuddelsRuntimeHints();
knuddels.registerHints(runtimeHints, null);

// Verify no reflection hints are added (only resources)
assertThat(runtimeHints.reflection().typeHints().count()).isEqualTo(0);
}

@Test
void should_not_register_proxy_hints() {
var runtimeHints = new RuntimeHints();
var knuddels = new KnuddelsRuntimeHints();
knuddels.registerHints(runtimeHints, null);

// Verify no proxy hints are added
assertThat(runtimeHints.proxies().jdkProxyHints().count()).isEqualTo(0);
}

@Test
void should_register_hints_idempotently() {
var runtimeHints = new RuntimeHints();
var knuddels = new KnuddelsRuntimeHints();

knuddels.registerHints(runtimeHints, null);
long firstCount = runtimeHints.resources().resourcePatternHints().count();

knuddels.registerHints(runtimeHints, null);
long secondCount = runtimeHints.resources().resourcePatternHints().count();

// Multiple registrations should result in the same hints (or double)
assertThat(secondCount).isGreaterThanOrEqualTo(firstCount);
}

@Test
void should_register_hints_only_for_jtokkit_resources() {
var runtimeHints = new RuntimeHints();
var knuddels = new KnuddelsRuntimeHints();
knuddels.registerHints(runtimeHints, null);

// Verify hints are specific to jtokkit resources
boolean hasJtokkitResources = runtimeHints.resources()
.resourcePatternHints()
.anyMatch(
hint -> hint.getIncludes().stream().anyMatch(pattern -> pattern.getPattern().contains("jtokkit")));

assertThat(hasJtokkitResources).isTrue();
}

}