Vivek Gupta created COLLECTIONS-804: ---------------------------------------
Summary: testCollectionToArray2() is non deterministic Key: COLLECTIONS-804 URL: https://issues.apache.org/jira/browse/COLLECTIONS-804 Project: Commons Collections Issue Type: Bug Components: Collection Reporter: Vivek Gupta The test {{org.apache.commons.collections4.collection.AbstractCollectionTest.testCollectionToArray2()}} can fail if two {{toArray()}} calls return elements in a different order. One can check for that using the NonDex tool ([https://github.com/TestingResearchIllinois/NonDex]). Bug repoduction: # Clone the repo and cd into it. # {{mvn test -Dtest=org.apache.commons.collections4.bidimap.DualHashBidiMapTest#testCollectionToArray2 -Drat.skip}} This test will pass. # {{mvn edu.illinois:nondex-maven-plugin:1.1.2:nondex -Dtest=org.apache.commons.collections4.bidimap.DualHashBidiMapTest#testCollectionToArray2 -Drat.skip}} This command runs the NonDex tool on the the test. Near the end of the output, you will see a summary of test failures, where you will find {{testCollectionToArray2()}} function listed. The source of the bug: The test gets an array representation of the collections and then compares them, taking the order into account. However, Java Collections need not be necessarily ordered. Its member function {{toArray()}} also does not guarantee a deterministic order of the elements in its returned list. As such, we should ignore the order of the elements in the assertion. Proposed fix: We ignore the order of array lists by putting its elements into separate multisets and then comparing those multisets for equality. Multiset is not a part of the standard Java library. However, conveniently enough, this repository already had an implementation of multiset called HashBags, which I used. -- This message was sent by Atlassian Jira (v8.20.1#820001)