PreCheckFailureReason durch gezielte Tests abgesichert
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
package de.gecheckt.pdf.umbenenner.domain.model;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests for {@link PreCheckFailureReason}.
|
||||
* <p>
|
||||
* These tests ensure complete coverage of all enum values and their properties,
|
||||
* including descriptions and distinguishing characteristics.
|
||||
*/
|
||||
class PreCheckFailureReasonTest {
|
||||
|
||||
@Test
|
||||
void testEnumValuesExist() {
|
||||
// Verify all expected enum values exist
|
||||
assertNotNull(PreCheckFailureReason.NO_USABLE_TEXT);
|
||||
assertNotNull(PreCheckFailureReason.PAGE_LIMIT_EXCEEDED);
|
||||
assertNotNull(PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE);
|
||||
|
||||
// Verify total count to detect unexpected additions
|
||||
assertEquals(3, PreCheckFailureReason.values().length);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNoUsableTextProperties() {
|
||||
PreCheckFailureReason reason = PreCheckFailureReason.NO_USABLE_TEXT;
|
||||
|
||||
assertEquals("No usable text in extracted PDF content", reason.getDescription());
|
||||
assertEquals("NO_USABLE_TEXT", reason.name());
|
||||
assertEquals(0, reason.ordinal());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPageLimitExceededProperties() {
|
||||
PreCheckFailureReason reason = PreCheckFailureReason.PAGE_LIMIT_EXCEEDED;
|
||||
|
||||
assertEquals("Document page count exceeds configured limit", reason.getDescription());
|
||||
assertEquals("PAGE_LIMIT_EXCEEDED", reason.name());
|
||||
assertEquals(1, reason.ordinal());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testContentNotExtractableProperties() {
|
||||
PreCheckFailureReason reason = PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE;
|
||||
|
||||
assertEquals("PDF content not extractable", reason.getDescription());
|
||||
assertEquals("CONTENT_NOT_EXTRACTABLE", reason.name());
|
||||
assertEquals(2, reason.ordinal());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValueOfMethod() {
|
||||
// Test that all enum values can be retrieved via valueOf
|
||||
assertEquals(PreCheckFailureReason.NO_USABLE_TEXT,
|
||||
PreCheckFailureReason.valueOf("NO_USABLE_TEXT"));
|
||||
assertEquals(PreCheckFailureReason.PAGE_LIMIT_EXCEEDED,
|
||||
PreCheckFailureReason.valueOf("PAGE_LIMIT_EXCEEDED"));
|
||||
assertEquals(PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE,
|
||||
PreCheckFailureReason.valueOf("CONTENT_NOT_EXTRACTABLE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testToStringMethod() {
|
||||
// Test that toString returns the name (default behavior)
|
||||
assertEquals("NO_USABLE_TEXT", PreCheckFailureReason.NO_USABLE_TEXT.toString());
|
||||
assertEquals("PAGE_LIMIT_EXCEEDED", PreCheckFailureReason.PAGE_LIMIT_EXCEEDED.toString());
|
||||
assertEquals("CONTENT_NOT_EXTRACTABLE", PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDescriptionsAreDistinct() {
|
||||
// Ensure all descriptions are unique and meaningful
|
||||
String noUsableTextDesc = PreCheckFailureReason.NO_USABLE_TEXT.getDescription();
|
||||
String pageLimitExceededDesc = PreCheckFailureReason.PAGE_LIMIT_EXCEEDED.getDescription();
|
||||
String contentNotExtractableDesc = PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE.getDescription();
|
||||
|
||||
assertNotEquals(noUsableTextDesc, pageLimitExceededDesc);
|
||||
assertNotEquals(noUsableTextDesc, contentNotExtractableDesc);
|
||||
assertNotEquals(pageLimitExceededDesc, contentNotExtractableDesc);
|
||||
|
||||
// Verify descriptions contain meaningful content
|
||||
assertTrue(noUsableTextDesc.contains("usable") && noUsableTextDesc.contains("text"));
|
||||
assertTrue(pageLimitExceededDesc.contains("page") && pageLimitExceededDesc.contains("limit"));
|
||||
assertTrue(contentNotExtractableDesc.contains("PDF") && contentNotExtractableDesc.contains("extractable"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnumConstantOrderIsStable() {
|
||||
// Verify the order of enum constants is as expected
|
||||
PreCheckFailureReason[] values = PreCheckFailureReason.values();
|
||||
assertEquals(PreCheckFailureReason.NO_USABLE_TEXT, values[0]);
|
||||
assertEquals(PreCheckFailureReason.PAGE_LIMIT_EXCEEDED, values[1]);
|
||||
assertEquals(PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE, values[2]);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDescriptionsAreNotNullAndNotEmpty() {
|
||||
// Verify all descriptions are not null or empty
|
||||
for (PreCheckFailureReason reason : PreCheckFailureReason.values()) {
|
||||
String description = reason.getDescription();
|
||||
assertNotNull(description, "Description should not be null for " + reason.name());
|
||||
assertFalse(description.isEmpty(), "Description should not be empty for " + reason.name());
|
||||
assertTrue(description.length() > 10, "Description should be meaningful for " + reason.name());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEachEnumValueHasUniqueDescription() {
|
||||
// Verify each enum value has a unique description
|
||||
PreCheckFailureReason[] values = PreCheckFailureReason.values();
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
for (int j = i + 1; j < values.length; j++) {
|
||||
assertNotEquals(values[i].getDescription(), values[j].getDescription(),
|
||||
"Descriptions should be unique for " + values[i].name() + " and " + values[j].name());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnumConstantsAreImmutable() {
|
||||
// Verify that the same instance is returned for each enum constant
|
||||
assertSame(PreCheckFailureReason.NO_USABLE_TEXT, PreCheckFailureReason.valueOf("NO_USABLE_TEXT"));
|
||||
assertSame(PreCheckFailureReason.PAGE_LIMIT_EXCEEDED, PreCheckFailureReason.valueOf("PAGE_LIMIT_EXCEEDED"));
|
||||
assertSame(PreCheckFailureReason.CONTENT_NOT_EXTRACTABLE, PreCheckFailureReason.valueOf("CONTENT_NOT_EXTRACTABLE"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user