You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2021/04/12 06:04:17 UTC

[groovy] 11/26: GROOVY-9649: Added test cases for left- and full-exclusive IntRanges

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch groovy9649
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 833510c2ca370d8a7bc80b95445fb2b0e994b1bd
Author: Esko Toivonen <es...@tuni.fi>
AuthorDate: Wed Apr 7 11:21:13 2021 +0300

    GROOVY-9649: Added test cases for left- and full-exclusive IntRanges
---
 src/test/groovy/lang/IntRangeTest.groovy | 121 +++++++++++++++++++++++--------
 1 file changed, 91 insertions(+), 30 deletions(-)

diff --git a/src/test/groovy/lang/IntRangeTest.groovy b/src/test/groovy/lang/IntRangeTest.groovy
index c7fa51c..ac495b9 100644
--- a/src/test/groovy/lang/IntRangeTest.groovy
+++ b/src/test/groovy/lang/IntRangeTest.groovy
@@ -54,6 +54,11 @@ class IntRangeTest extends GroovyTestCase {
         assert new IntRange(true, 0, 0).size() == 1
         assert new IntRange(false, 0, 1).size() == 1
         assert new IntRange(true, 0, 1).size() == 2
+        assert new IntRange(true, true, 0, 0).size() == 1
+        assert new IntRange(false, true, 0, 0).size() == 0
+        assert new IntRange(false, true, 0, 1).size() == 1
+        assert new IntRange(false, false, 0, 0).size() == 0
+        assert new IntRange(false, false, 0, 1).size() == 0
     }
 
     /**
@@ -90,37 +95,81 @@ class IntRangeTest extends GroovyTestCase {
 
     void testInclusiveRangesWithNegativesAndPositives() {
         final a = [1, 2, 3, 4]
-        assert a[-3..-2] == [2, 3]
-        assert a[-3..<-2] == [2]
-        assert a[2..-3] == [3, 2]
-        assert a[1..-1] == [2, 3, 4]
-        assert a[1..<-1] == [2, 3]
-        assert a[-2..<1] == [3]
-        assert a[-2..<-3] == [3]
-        assert a[5..<5] == []
-        assert a[-5..<-5] == []
+        assert a[-3..-2]   == [2, 3]
+        assert a[-3..<-2]  == [2]
+        assert a[-3<..2]   == [3]
+        assert a[-3<..<-2] == []
+
+        assert a[2..-3]    == [3, 2]
+
+        assert a[1..-1]    == [2, 3, 4]
+        assert a[1..<-1]   == [2, 3]
+        assert a[1<..-1]   == [3, 4]
+        assert a[1<..<-1]  == [3]
+
+        assert a[-2..<1]   == [3]
+        assert a[-2<..1]   == [2]
+        assert a[-2<..<1]  == []
+
+        assert a[-2..<-3]  == [3]
+        assert a[-2<..-3]  == [2]
+        assert a[-2<..<-3] == []
+
+        assert a[5..<5]    == []
+        assert a[5<..5]    == []
+        assert a[5<..<5]   == []
+        assert a[5<..<6]   == []
+        assert a[-5..<-5]  == []
     }
 
     void testInclusiveRangesWithNegativesAndPositivesStrings() {
         def items = 'abcde'
-        assert items[1..-2]   == 'bcd'
-        assert items[1..<-2]  == 'bc'
-        assert items[-3..<-2] == 'c'
-        assert items[-2..-4]  == 'dcb'
-        assert items[-2..<-4] == 'dc'
-        assert items[2..<2] == ''
-        assert items[-2..<-2] == ''
+        assert items[1..-2]    == 'bcd'
+        assert items[1..<-2]   == 'bc'
+        assert items[1<..-2]   == 'cd'
+        assert items[1<..<-2]  == 'c'
+
+        assert items[-3..<-2]  == 'c'
+        assert items[-3<..-2]  == 'd'
+        assert items[-3<..<-2] == ''
+
+        assert items[-2..-4]   == 'dcb'
+        assert items[-2..<-4]  == 'dc'
+        assert items[-2<..-4]  == 'cb'
+        assert items[-2<..<-4] == 'c'
+
+        assert items[2..<2]    == ''
+        assert items[2<..2]    == ''
+        assert items[2<..<2]   == ''
+        assert items[2<..<3]   == ''
+
+        assert items[-2..<-2]  == ''
+        assert items[-2<..-2]  == ''
+        assert items[-2<..<-2] == ''
+        assert items[-2<..<-3] == ''
     }
 
     void testInclusiveRangesWithNegativesAndPositivesPrimBoolArray() {
         boolean[] bs = [true, false, true, true]
-        assert bs[-3..-2]  == [false, true]
-        assert bs[-3..<-2] == [false]
-        assert bs[2..-3]   == [true, false]
-        assert bs[1..-1]   == [false, true, true]
-        assert bs[1..<-1]  == [false, true]
-        assert bs[-2..<1]  == [true]
-        assert bs[-2..<-3] == [true]
+        assert bs[-3..-2]   == [false, true]
+        assert bs[-3..<-2]  == [false]
+        assert bs[-3<..-2]  == [true]
+        assert bs[-3<..<-2] == []
+
+        assert bs[2..-3]    == [true, false]
+
+        assert bs[1..-1]    == [false, true, true]
+        assert bs[1..<-1]   == [false, true]
+        assert bs[1<..-1]   == [true, true]
+        assert bs[1<..<-1]  == [true]
+
+        assert bs[-2..<1]   == [true]
+        assert bs[-2<..1]   == [false]
+        assert bs[-2<..<1]  == []
+
+        assert bs[-2..<-3]  == [true]
+        assert bs[-2<..-3]  == [false]
+        assert bs[-2<..<-3] == []
     }
 
     void testInclusiveRangesWithNegativesAndPositivesBitset() {
@@ -132,13 +181,25 @@ class IntRangeTest extends GroovyTestCase {
         assert bs.toString() == '{1, 2, 6, 10, 14, 16, 17, 18, 23}'
         assert bs[bs.length()-1] == true
         assert bs[-1] == true
-        assert bs[6..17].toString() == '{0, 4, 8, 10, 11}'
-        assert bs[6..<17].toString() == '{0, 4, 8, 10}'
-        assert bs[17..6].toString() == '{0, 1, 3, 7, 11}'
-        assert bs[17..<6].toString() == '{0, 1, 3, 7}'
-        assert bs[-1..-7].toString() == '{0, 5, 6}'
-        assert bs[-1..<-7].toString() == '{0, 5}'
-        assert bs[20..<-8].toString() == '{2, 3}'
+
+        assert bs[6..17].toString()    == '{0, 4, 8, 10, 11}'
+        assert bs[6..<17].toString()   == '{0, 4, 8, 10}'
+        assert bs[6<..17].toString()   == '{3, 7, 9, 10}'
+        assert bs[6<..<17].toString()  == '{3, 7, 9}'
+
+        assert bs[17..6].toString()    == '{0, 1, 3, 7, 11}'
+        assert bs[17..<6].toString()   == '{0, 1, 3, 7}'
+        assert bs[17<..6].toString()   == '{0, 2, 6, 10}'
+        assert bs[17<..<6].toString()  == '{0, 2, 6}'
+
+        assert bs[-1..-7].toString()   == '{0, 5, 6}'
+        assert bs[-1..<-7].toString()  == '{0, 5}'
+        assert bs[-1<..-7].toString()  == '{4, 5}'
+        assert bs[-1<..<-7].toString() == '{4}'
+
+        assert bs[20..<-8].toString()  == '{2, 3}'
+        assert bs[20<..-8].toString()  == '{1, 2, 3}'
+        assert bs[20<..<-8].toString() == '{1, 2}'
     }
 
     void testHashCode(){