Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-7602

Intersect returns an empty list when the contents of the compared Collections are Maps

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.3.11, 2.4.5
    • Fix Version/s: 2.4.7
    • Component/s: groovy-jdk
    • Labels:
      None
    • Environment:
      Mac OS X 10.9.5
      Oracle Java 1.8.0_60

      Description

      When I compare two lists with intersect and both lists contain maps I do not get any results, even if the contents are equivalent. The test fails in Groovy 2.3.11, but passes in 2.3.7.

      import org.junit.Test
      
      class IntersectTest {
          @Test
          void testIntersect() {
              def list1 = [[language: 'Java'], [language: 'Groovy'], [language: 'Scala']]
              def list2 = [[language: 'Groovy'], [language: 'JRuby'], [language: 'Java']]
              def intersection = list1.intersect(list2)
      
              assert list1[0] == list2[2] // proves that there should be intersecting values
              println "Intersection: $intersection"
              assert intersection == [[language: 'Groovy'], [language: 'Java']]
          }
      }
      

      The intersect call returns an empty list in 2.3.11, resulting in the following output:

      Intersection: []
      
      Assertion failed: 
      
      assert intersection == [[language: 'Groovy'], [language: 'Java']]
             |            |
             []           false
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                paulk Paul King
                Reporter:
                jguertin-gls Justin Guertin
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: