diff --git a/ect/src/main/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParser.java b/ect/src/main/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParser.java index f09604e6..8bb7d75a 100644 --- a/ect/src/main/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParser.java +++ b/ect/src/main/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParser.java @@ -609,6 +609,7 @@ protected String populateCodeList(BufferedReader reader, CodeList codeList) thro line = readUntilCode(reader); Matcher firstCodeMatcher = CODE.matcher(line); firstCodeMatcher.matches(); + int expectedIndentLength = firstCodeMatcher.group(1).length(); while (line != null && !line.matches(ELEMENT_SEPARATOR)) { Matcher codeMatcher = CODE.matcher(line); @@ -623,7 +624,7 @@ protected String populateCodeList(BufferedReader reader, CodeList codeList) thro } protected boolean isCode(Matcher codeMatcher, int expectedIndentLength) { - return codeMatcher.matches() && codeMatcher.group(1).length() == expectedIndentLength; + return codeMatcher.matches() && codeMatcher.group(1).length() <= expectedIndentLength; } protected String readUntilCode(BufferedReader reader) throws IOException { diff --git a/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/D96ADirectoryParserTest.java b/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/D96ADirectoryParserTest.java index ec78c3ce..a4e77397 100644 --- a/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/D96ADirectoryParserTest.java +++ b/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/D96ADirectoryParserTest.java @@ -60,8 +60,8 @@ public class D96ADirectoryParserTest { @Test - @DisplayName("should extract legacy D96A code list values correctly") - public void checkThatD96ACodeListsAreReadCorrectlyForLegacyD96A() throws Exception { + @DisplayName("should extract D96A code list values correctly") + public void checkThatD96ACodeListsAreReadCorrectly() throws Exception { InputStream inputStream = getClass().getResourceAsStream("/d96a.zip"); ZipInputStream zipInputStream = new ZipInputStream(inputStream); DirectoryParser d96AReader = new D96ADirectoryParser(zipInputStream, false, false); @@ -69,8 +69,11 @@ public void checkThatD96ACodeListsAreReadCorrectlyForLegacyD96A() throws Excepti Map definitionFiles = d96AReader.getDefinitionFiles(); assertFalse(definitionFiles.get("uncl") == null || definitionFiles.get("uncl").length == 0); - final Component component = getSimpleDataElement(d96AReader, "5125"); - assertEquals(9, component.getCodeList().getCodes().size()); + final Component component5125 = getSimpleDataElement(d96AReader, "5125"); + assertEquals(9, component5125.getCodeList().getCodes().size()); + + final Component component6063 = getSimpleDataElement(d96AReader, "6063"); + assertEquals(180, component6063.getCodeList().getCodes().size()); } @Test diff --git a/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParserTest.java b/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParserTest.java index 45142e65..06bd9500 100644 --- a/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParserTest.java +++ b/ect/src/test/java/org/smooks/edi/ect/formats/unedifact/parser/UnEdifactDirectoryParserTest.java @@ -101,14 +101,6 @@ public void parseD08A() throws Exception { d08AReader_shortnames = new UnEdifactDirectoryParser(zipInputStream, false, true); } - public void _disabled_test_D08A_Messages() throws IOException, EdiParseException { - test("BANSTA", d08AReader_longnames); - test("CASRES", d08AReader_longnames); - test("INVOIC", d08AReader_longnames); - test("PAYMUL", d08AReader_longnames); - test("TPFREP", d08AReader_longnames); - } - @Test @DisplayName("should support long messages names") public void test_getMessagesLongName() throws IOException {