refactored, pre-buffer reuse

This commit is contained in:
Relism
2026-03-15 14:31:52 +01:00
parent f1beb160aa
commit b0d606cb5f
64 changed files with 888 additions and 400 deletions
@@ -0,0 +1,63 @@
package dev.relism.routing;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class PathUtilsTest {
// --- sanitize ---
@Test
void sanitize_nullOrBlank_returnsRoot() {
assertEquals("/", PathUtils.sanitize(null));
assertEquals("/", PathUtils.sanitize(""));
assertEquals("/", PathUtils.sanitize(" "));
assertEquals("/", PathUtils.sanitize("/"));
}
@Test
void sanitize_trimsWhitespaceAndEnsuresLeadingSlash() {
assertEquals("/users", PathUtils.sanitize(" users "));
assertEquals("/api", PathUtils.sanitize("api"));
}
@Test
void sanitize_removesTrailingSlash() {
assertEquals("/users", PathUtils.sanitize("/users/"));
assertEquals("/api/v1", PathUtils.sanitize("/api/v1/"));
}
@Test
void sanitize_collapsesMultipleSlashes() {
assertEquals("/a/b/c", PathUtils.sanitize("//a///b//c/"));
}
// --- join ---
@Test
void join_withRootBase_returnsSanitizedPath() {
assertEquals("/users", PathUtils.join("/", "/users/"));
assertEquals("/users", PathUtils.join("/", "users"));
}
@Test
void join_withRootPath_returnsSanitizedBase() {
assertEquals("/api", PathUtils.join("/api/", "/"));
assertEquals("/api", PathUtils.join("api", ""));
}
@Test
void join_preventsDoubleNamespace() {
// Path already starts with base
assertEquals("/api/users", PathUtils.join("/api", "/api/users"));
assertEquals("/api/users", PathUtils.join("/api/", "/api/users/"));
}
@Test
void join_concatenatesProperly() {
assertEquals("/api/users", PathUtils.join("/api", "users"));
assertEquals("/api/users", PathUtils.join("/api", "/users"));
assertEquals("/api/users", PathUtils.join("api", "users"));
}
}