You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@opennlp.apache.org by "Sujithra Rajan (Jira)" <ji...@apache.org> on 2023/11/19 02:32:00 UTC

[jira] [Created] (OPENNLP-1519) Use LinkedHashSet for deterministic iteration order

Sujithra Rajan created OPENNLP-1519:
---------------------------------------

             Summary: Use LinkedHashSet for deterministic iteration order
                 Key: OPENNLP-1519
                 URL: https://issues.apache.org/jira/browse/OPENNLP-1519
             Project: OpenNLP
          Issue Type: Improvement
            Reporter: Sujithra Rajan


Two tests
 * `opennlp.tools.dictionary.DictionaryAsSetCaseInsensitiveTest.testEquals`
 * `opennlp.tools.dictionary.DictionaryAsSetCaseInsensitiveTest.testEqualsDifferentCase`

uses HashSet for entrySet while initializing the 'Dictionary' and thus the order is not constant all the time.

This was found by using the [NonDex][https://github.com/TestingResearchIllinois/NonDex] tool.

Encountered the following error messages:
{quote}org.opentest4j.AssertionFailedError: expected: <[1a, 1b]> but was: <[1b, 1a]>
at opennlp.tools.dictionary.DictionaryAsSetCaseInsensitiveTest.testEquals(DictionaryAsSetCaseInsensitiveTest.java:121)
{quote}
{quote}org.opentest4j.AssertionFailedError: expected: <[1a, 1b]> but was: <[1B, 1A]>
at opennlp.tools.dictionary.DictionaryAsSetCaseInsensitiveTest.testEqualsDifferentCase(DictionaryAsSetCaseInsensitiveTest.java:142)
{quote}
{quote}org.opentest4j.AssertionFailedError: expected: <[[Berlin], [Stockholm], [New,York], [London], [Copenhagen], [Paris]]> but was: <[[Copenhagen], [London], [New,York], [Stockholm], [Paris], [Berlin]]>
at opennlp.uima.dictionary.DictionaryResourceTest.testDictionaryWasLoaded(DictionaryResourceTest.java:76)
{quote}
 

The fix is to change HashSet to LinkedHashSet so that the iteration order remains stable all the time. 

Assertion statement of 'testDictionaryWasLoaded' was modified to match the exact ordering of dictionary.dic.

 

**REPRODUCE:**

```

mvn edu.illinois:nondex-maven-plugin:2.1.7-SNAPSHOT:nondex -Dtest=opennlp.tools.dictionary.DictionaryAsSetCaseInsensitiveTest#testEquals

```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)