[
https://issues.apache.org/jira/browse/GROOVY-8537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-8537.
-------------------------------
Resolution: Fixed
Assignee: Paul King
Fix Version/s: 2.4.16
Proposed PR applied. Thanks for spotting the issue and creating the PR! Much
appreciated.
> GroovyCollections.combinations(Iterable) exhibits incorrect (asymmetric)
> behavior
> ---------------------------------------------------------------------------------
>
> Key: GROOVY-8537
> URL: https://issues.apache.org/jira/browse/GROOVY-8537
> Project: Groovy
> Issue Type: Bug
> Components: groovy-jdk
> Affects Versions: 2.4.15
> Reporter: Venkatesh-Prasad Ranganath
> Assignee: Paul King
> Priority: Major
> Labels: easyfix
> Fix For: 2.4.16
>
>
> h4. *Issue*
> When GroovyCollections.combinations() is invoked on a collection of iterables
> with at least one empty iterable, the expected return value is an empty list
> of combinations.
> Instead, in version 2.4.15 (and I am guessing in earlier versions at least
> since 2.2.0), the return value of combinations() is sensitive to the order of
> iterables in the input collection. Here are two instances of such behavior.
> h4. Repro
> {{groovy:000> assert [[1,3], []].combinations() == [[],
> [1,3]].combinations()}}
> {{ERROR org.codehaus.groovy.runtime.powerassert.PowerAssertionError:}}
> {{assert [[1,3], []].combinations() == [[], [1,3]].combinations()}}
> {{ | | |}}
> {{ [] false [[1], [3]]}}
>
> {{groovy:000> assert [[1,3], [2], []].combinations() == [[1,3], [],
> [2]].combinations()}}
> {{ERROR org.codehaus.groovy.runtime.powerassert.PowerAssertionError:}}
> {{assert [[1,3], [2], []].combinations() == [[1,3], [], [2]].combinations()}}
> {{ | | |}}
> {{ [] false [[2]]}}
> h4. *Fix*
> Add a short-circuiting check at the start of combinations(Iterable) method to
> return an empty list of combination if any of the input iterables are empty.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)