diff --git a/libs/natparse/src/main/java/org/amshove/natparse/natural/ddm/DescriptorType.java b/libs/natparse/src/main/java/org/amshove/natparse/natural/ddm/DescriptorType.java index 7ad9a0a90..1c906aaf1 100644 --- a/libs/natparse/src/main/java/org/amshove/natparse/natural/ddm/DescriptorType.java +++ b/libs/natparse/src/main/java/org/amshove/natparse/natural/ddm/DescriptorType.java @@ -8,7 +8,9 @@ public enum DescriptorType DESCRIPTOR, SUPERDESCRIPTOR, PHONETIC, - UNIQUE; + UNIQUE, + HYPERDESCRIPTOR, + NONDESCRIPTOR; /** * Constructs the {@link DescriptorType} from source. @@ -24,6 +26,8 @@ public static DescriptorType fromSource(String source) case "S" -> SUPERDESCRIPTOR; case "P" -> PHONETIC; case "U" -> UNIQUE; + case "H" -> HYPERDESCRIPTOR; + case "N" -> NONDESCRIPTOR; case " " -> NONE; default -> throw new NaturalParseException(String.format("Can't determine DescriptorType from \"%s\"", source)); }; diff --git a/libs/natparse/src/test/java/org/amshove/natparse/parsing/ddm/DdmParserShould.java b/libs/natparse/src/test/java/org/amshove/natparse/parsing/ddm/DdmParserShould.java index a2672316b..e004207d2 100644 --- a/libs/natparse/src/test/java/org/amshove/natparse/parsing/ddm/DdmParserShould.java +++ b/libs/natparse/src/test/java/org/amshove/natparse/parsing/ddm/DdmParserShould.java @@ -53,7 +53,7 @@ void parseACompleteDdm() var fields = ddm.fields(); - assertThat(ddm.fields()).hasSize(12); + assertThat(ddm.fields()).hasSize(14); var topLevelFields = fields.stream().map(IDdmField::name).collect(Collectors.toList()); assertThat(topLevelFields) @@ -68,7 +68,9 @@ void parseACompleteDdm() "A-SUPERDESCRIPTOR", "ANOTHER-SUPERDESCRIPTOR", "SUPERDESCRIPTOR-WITH-SUBRANGE", - "UNIQUE-SUPER-WITH-SUBRANGE" + "UNIQUE-SUPER-WITH-SUBRANGE", + "HYPERDESCRIPTOR", + "NONDESCRIPTOR" ) ); @@ -103,6 +105,11 @@ void parseACompleteDdm() assertThat(superdescriptorWithSubrange.fields()).hasSize(2); assertSuperdescriptorHasField(superdescriptorWithSubrange, "SOME-NUMBER", 1, 5); assertSuperdescriptorHasField(superdescriptorWithSubrange, "TOP-LEVEL-GROUP-CHILD", 5, 12); + + var aHyperdescriptor = findField(ddm, "HYPERDESCRIPTOR"); + assertThat(aHyperdescriptor.descriptor()).isEqualTo(DescriptorType.HYPERDESCRIPTOR); + var aNondescriptor = findField(ddm, "NONDESCRIPTOR"); + assertThat(aNondescriptor.descriptor()).isEqualTo(DescriptorType.NONDESCRIPTOR); } @Test diff --git a/libs/natparse/src/test/resources/org/amshove/natparse/parsing/ddm/CompleteDdm.NSD b/libs/natparse/src/test/resources/org/amshove/natparse/parsing/ddm/CompleteDdm.NSD index 34f8c51f7..0414f8e33 100644 --- a/libs/natparse/src/test/resources/org/amshove/natparse/parsing/ddm/CompleteDdm.NSD +++ b/libs/natparse/src/test/resources/org/amshove/natparse/parsing/ddm/CompleteDdm.NSD @@ -36,9 +36,11 @@ P 1 BA PERIODIC-GROUP * -------- SOURCE FIELD(S) ------- * SOME-NUMBER (1-5) * TOP-LEVEL-GROUP-CHILD (5-12) - 1 AI UNIQUE-SUPER-WITH-SUBRANGE A 32 N U + 1 AJ UNIQUE-SUPER-WITH-SUBRANGE A 32 N U * -------- SOURCE FIELD(S) ------- * SOME-NUMBER (1-5) * ANOTHER-NUMBER(1-12) * ALPHA-FIELD (1-8) + 1 AK HYPERDESCRIPTOR A 32 N H + 1 AL NONDESCRIPTOR A 32 N N ******DDM OUTPUT TERMINATED******