refactored, pre-buffer reuse
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package dev.relism.models;
|
||||
|
||||
import dev.relism.fpr.core.ByteView;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class PathParamsTest {
|
||||
|
||||
// --- helpers ---
|
||||
|
||||
private static PathParams of(String path, String... paramsPairs) {
|
||||
byte[] bytes = path.getBytes(StandardCharsets.UTF_8);
|
||||
ByteView view = new ByteView() {
|
||||
public int length() { return bytes.length; }
|
||||
public byte byteAt(int idx) { return bytes[idx]; }
|
||||
};
|
||||
|
||||
String[] names = new String[paramsPairs.length / 2];
|
||||
int[] starts = new int[paramsPairs.length / 2];
|
||||
int[] lens = new int[paramsPairs.length / 2];
|
||||
|
||||
for (int i = 0; i + 1 < paramsPairs.length; i += 2) {
|
||||
names[i / 2] = paramsPairs[i];
|
||||
String val = paramsPairs[i + 1];
|
||||
starts[i / 2] = path.indexOf(val);
|
||||
lens[i / 2] = val.length();
|
||||
}
|
||||
|
||||
return new PathParams(view, names, starts, lens);
|
||||
}
|
||||
|
||||
// --- get ---
|
||||
|
||||
@Test
|
||||
void get_existingParam() {
|
||||
PathParams params = of("/users/123/posts/456", "userId", "123", "postId", "456");
|
||||
assertEquals("123", params.get("userId"));
|
||||
assertEquals("456", params.get("postId"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_missingParam_returnsNull() {
|
||||
PathParams params = of("/users/123", "userId", "123");
|
||||
assertNull(params.get("unknown"));
|
||||
}
|
||||
|
||||
// --- view ---
|
||||
|
||||
@Test
|
||||
void view_existingParamZeroCopy() {
|
||||
PathParams params = of("/users/123", "userId", "123");
|
||||
ByteView view = params.view("userId");
|
||||
assertNotNull(view);
|
||||
assertEquals(3, view.length());
|
||||
assertEquals('1', view.byteAt(0));
|
||||
assertEquals('3', view.byteAt(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void view_missingParam_returnsNull() {
|
||||
PathParams params = of("/users/123", "userId", "123");
|
||||
assertNull(params.view("unknown"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user