Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion avaje-prisms/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>io.avaje</groupId>
<artifactId>avaje-prisms-parent</artifactId>
<version>1.44-RC2</version>
<version>1.44-RC3</version>
</parent>
<artifactId>avaje-prisms</artifactId>
<name>avaje-prisms</name>
Expand Down
2 changes: 1 addition & 1 deletion blackbox-test-prism/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.avaje</groupId>
<artifactId>avaje-prisms-parent</artifactId>
<version>1.44-RC2</version>
<version>1.44-RC3</version>
</parent>

<artifactId>blackbox-test-prism</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package io.avaje.prisms.test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -33,4 +36,189 @@ void trimmedAnnotation() {
ProcessorUtils.trimAnnotations(
"java.ProcessorUtils.Map<java.lang.@jakarta.validation.constraints.Positive(message=\\\"sus \\\", groups=1) String,java.lang.String>"));
}

// --- Tests for boxedPrimitive ---

@Test
void boxedPrimitive_primitiveType() {
assertEquals("java.lang.Integer", ProcessorUtils.boxedPrimitive("int"));
assertEquals("java.lang.Character", ProcessorUtils.boxedPrimitive("char"));
assertEquals("java.lang.Boolean", ProcessorUtils.boxedPrimitive("boolean"));
assertEquals("java.lang.Double", ProcessorUtils.boxedPrimitive("double"));
}

@Test
void boxedPrimitive_nonPrimitiveType() {
assertNull(ProcessorUtils.boxedPrimitive("String"));
assertNull(ProcessorUtils.boxedPrimitive("java.util.List"));
}

@Test
void boxedPrimitive_emptyString() {
assertNull(ProcessorUtils.boxedPrimitive(""));
}

// --- Tests for isPrimitive ---

@Test
void isPrimitive_isPrimitive() {
assertTrue(ProcessorUtils.isPrimitive("byte"));
assertTrue(ProcessorUtils.isPrimitive("long"));
assertTrue(ProcessorUtils.isPrimitive("float"));
}

@Test
void isPrimitive_isNotPrimitive() {
assertFalse(ProcessorUtils.isPrimitive("Byte"));
assertFalse(ProcessorUtils.isPrimitive("String"));
assertFalse(ProcessorUtils.isPrimitive("void")); // void is not in BOX_MAP
}

// --- Tests for packageOf ---

@Test
void packageOf_normalFQN() {
assertEquals("java.util", ProcessorUtils.packageOf("java.util.List"));
}

@Test
void packageOf_nestedClass() {
// shortType handles nested classes, e.g., "Outer.Inner"
assertEquals("io.avaje.test", ProcessorUtils.packageOf("io.avaje.test.Outer.Inner"));
}

@Test
void packageOf_emptyString() {
assertEquals("", ProcessorUtils.packageOf(""));
}

// --- Tests for shortType ---

@Test
void shortType_simpleClass() {
assertEquals("List", ProcessorUtils.shortType("java.util.List"));
}

@Test
void shortType_nestedClass() {
assertEquals("Outer.Inner", ProcessorUtils.shortType("io.avaje.test.Outer.Inner"));
}

@Test
void shortType_nestedClassWithPackagePrefix() {
assertEquals("Outer.Inner", ProcessorUtils.shortType("mypkg.Outer.Inner"));
}

@Test
void shortType_classInDefaultPackage() {
assertEquals("MyClass", ProcessorUtils.shortType("MyClass"));
}

@Test
void shortType_packageOnly() {
assertEquals("util", ProcessorUtils.shortType("java.util"));
}

@Test
void shortType_emptyString() {
assertEquals("", ProcessorUtils.shortType(""));
}

// --- Tests for commonParent ---

@Test
void commonParent_identical() {
assertEquals(
"java.util.concurrent",
ProcessorUtils.commonParent("java.util.concurrent", "java.util.concurrent"));
}

@Test
void commonParent_firstIsParent() {
assertEquals("java.util", ProcessorUtils.commonParent("java.util", "java.util.List"));
}

@Test
void commonParent_secondIsParent() {
assertEquals("java.util", ProcessorUtils.commonParent("java.util.List", "java.util"));
}

@Test
void commonParent_defaultPackage() {
assertEquals("MyClass", ProcessorUtils.commonParent("MyClass", "java.lang"));
}

@Test
void commonParent_nullSecond() {
assertEquals("java.util.List", ProcessorUtils.commonParent("java.util.List", null));
}

@Test
void commonParent_nullFirst() {
// commonParent calls packageOf(secondPkg) if first is null
assertEquals("java.util", ProcessorUtils.commonParent(null, "java.util.List"));
}

@Test
void commonParent_bothNull() {
assertNull(ProcessorUtils.commonParent(null, null));
}

// --- Tests for sanitizeImports ---

@Test
void sanitizeImports_cleanInput() {
String input = "import java.util.List;";
assertEquals("import java.util.List;", ProcessorUtils.sanitizeImports(input));
}

@Test
void sanitizeImports_withAnnotation() {
String input = "@SuppressWarning(\"a\") import java.util.List;";
assertEquals("java.util.List;", ProcessorUtils.sanitizeImports(input));
}

@Test
void sanitizeImports_invalidCharacters() {
String input = "import java.util.L<>ist$;";
assertEquals("import java.util.List$;", ProcessorUtils.sanitizeImports(input));
}

// --- Tests for extractEnclosingFQN ---

@Test
void extractEnclosingFQN_notNested() {
assertEquals("java.util.List", ProcessorUtils.extractEnclosingFQN("java.util.List"));
}

@Test
void extractEnclosingFQN_singleNested() {
assertEquals("io.package.Top", ProcessorUtils.extractEnclosingFQN("io.package.Top.Nested"));
}

@Test
void extractEnclosingFQN_doubleNested() {
assertEquals(
"io.package.Top.Nested", ProcessorUtils.extractEnclosingFQN("io.package.Top.Nested.Inner"));
}
@Test
void extractEnclosingFQN_tripleNested() {
assertEquals(
"io.package.Top.Nested.Inner", ProcessorUtils.extractEnclosingFQN("io.package.Top.Nested.Inner.Inner"));
}

@Test
void extractEnclosingFQN_defaultPackage() {
assertEquals("Top", ProcessorUtils.extractEnclosingFQN("Top.Nested"));
}

@Test
void extractEnclosingFQN_topLevelClassOnly() {
assertEquals("Top", ProcessorUtils.extractEnclosingFQN("Top"));
}

@Test
void extractEnclosingFQN_packageOnly() {
assertEquals("java.util", ProcessorUtils.extractEnclosingFQN("java.util"));
}
}
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</parent>
<groupId>io.avaje</groupId>
<artifactId>avaje-prisms-parent</artifactId>
<version>1.44-RC2</version>
<version>1.44-RC3</version>
<packaging>pom</packaging>
<name>avaje-prisms-parent</name>
<description>A modular fork of hickory</description>
Expand All @@ -17,7 +17,7 @@
</scm>

<properties>
<project.build.outputTimestamp>2025-11-20T14:31:33Z</project.build.outputTimestamp>
<project.build.outputTimestamp>2025-11-21T15:27:08Z</project.build.outputTimestamp>
<nexus.staging.autoReleaseAfterClose>true</nexus.staging.autoReleaseAfterClose>
</properties>

Expand Down
2 changes: 1 addition & 1 deletion prism-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.avaje</groupId>
<artifactId>avaje-prisms-parent</artifactId>
<version>1.44-RC2</version>
<version>1.44-RC3</version>
</parent>
<name>avaje-prisms-core</name>
<artifactId>avaje-prism-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ public static void write(PrintWriter out, String packageName) {
+ " if (p == -1) {\n"
+ " return fullResult;\n"
+ " }\n"
+ " return fullResult.substring(0, p);\n"
+ " return fullResult.substring(0, p).replace('/', '.');\n"
+ " }\n"
+ "}\n");
}
Expand Down