groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul King (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (GROOVY-8537) GroovyCollections.combinations(Iterable) exhibits incorrect (asymmetric) behavior
Date Wed, 11 Apr 2018 06:43:00 GMT

     [ 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)

Mime
View raw message