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 2017/09/24 10:10:40 UTC
groovy git commit: GROOVY-8200 - Shorthand |= results in NPE (closes
#555)
Repository: groovy
Updated Branches:
refs/heads/master 65fcb6a7c -> 456aa4dd3
GROOVY-8200 - Shorthand |= results in NPE (closes #555)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/456aa4dd
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/456aa4dd
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/456aa4dd
Branch: refs/heads/master
Commit: 456aa4dd37dbcebcfb263db2914b2d84246bc30f
Parents: 65fcb6a
Author: noamt <no...@10ne.org>
Authored: Wed May 31 20:57:04 2017 +0200
Committer: paulk <pa...@asert.com.au>
Committed: Sun Sep 24 20:09:55 2017 +1000
----------------------------------------------------------------------
.../groovy/runtime/DefaultGroovyMethods.java | 8 ++--
src/spec/test/OperatorsTest.groovy | 44 +++++++++++++++++++-
.../runtime/DefaultGroovyMethodsTest.groovy | 36 ++++++++++++++++
3 files changed, 83 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/456aa4dd/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index f9e7bb6..e77ddb2 100644
--- a/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -15929,7 +15929,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @since 1.0
*/
public static Boolean and(Boolean left, Boolean right) {
- return left && right;
+ return left && Boolean.TRUE.equals(right);
}
/**
@@ -15941,7 +15941,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @since 1.0
*/
public static Boolean or(Boolean left, Boolean right) {
- return left || right;
+ return left || Boolean.TRUE.equals(right);
}
/**
@@ -15953,7 +15953,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @since 1.8.3
*/
public static Boolean implies(Boolean left, Boolean right) {
- return !left || right;
+ return !left || Boolean.TRUE.equals(right);
}
/**
@@ -15965,7 +15965,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @since 1.0
*/
public static Boolean xor(Boolean left, Boolean right) {
- return left ^ right;
+ return left ^ Boolean.TRUE.equals(right);
}
// public static Boolean negate(Boolean left) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/456aa4dd/src/spec/test/OperatorsTest.groovy
----------------------------------------------------------------------
diff --git a/src/spec/test/OperatorsTest.groovy b/src/spec/test/OperatorsTest.groovy
index a0eddf3..46b87f7 100644
--- a/src/spec/test/OperatorsTest.groovy
+++ b/src/spec/test/OperatorsTest.groovy
@@ -607,4 +607,46 @@ assert (b1 + 11).size == 15
assert str1 == str2
'''
}
-}
+
+ void testBooleanOr() {
+ assertScript '''
+boolean trueValue1 = true, trueValue2 = true, trueValue3 = true
+boolean falseValue1 = false, falseValue2 = false, falseValue3 = false
+
+assert (trueValue1 |= true)
+assert (trueValue2 |= false)
+assert (trueValue3 |= null)
+assert (falseValue1 |= true)
+assert !(falseValue2 |= false)
+assert !(falseValue3 |= null)
+'''
+ }
+
+ void testBooleanAnd() {
+ assertScript '''
+boolean trueValue1 = true, trueValue2 = true, trueValue3 = true
+boolean falseValue1 = false, falseValue2 = false, falseValue3 = false
+
+assert (trueValue1 &= true)
+assert !(trueValue2 &= false)
+assert !(trueValue3 &= null)
+assert !(falseValue1 &= true)
+assert !(falseValue2 &= false)
+assert !(falseValue3 &= null)
+'''
+ }
+
+ void testBooleanXor() {
+ assertScript '''
+boolean trueValue1 = true, trueValue2 = true, trueValue3 = true
+boolean falseValue1 = false, falseValue2 = false, falseValue3 = false
+
+assert !(trueValue1 ^= true)
+assert (trueValue2 ^= false)
+assert (trueValue3 ^= null)
+assert (falseValue1 ^= true)
+assert !(falseValue2 ^= false)
+assert !(falseValue3 ^= null)
+'''
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/groovy/blob/456aa4dd/src/test/org/codehaus/groovy/runtime/DefaultGroovyMethodsTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/runtime/DefaultGroovyMethodsTest.groovy b/src/test/org/codehaus/groovy/runtime/DefaultGroovyMethodsTest.groovy
index 85cd65b..2c1c0d7 100644
--- a/src/test/org/codehaus/groovy/runtime/DefaultGroovyMethodsTest.groovy
+++ b/src/test/org/codehaus/groovy/runtime/DefaultGroovyMethodsTest.groovy
@@ -279,4 +279,40 @@ public class DefaultGroovyMethodsTest extends GroovyTestCase {
delegate.iterator()
}
}
+
+ public void testBooleanOr() {
+ assertTrue(DefaultGroovyMethods.or(true, true))
+ assertTrue(DefaultGroovyMethods.or(true, false))
+ assertTrue(DefaultGroovyMethods.or(false, true))
+ assertFalse(DefaultGroovyMethods.or(false, false))
+ assertFalse(DefaultGroovyMethods.or(false, null))
+ assertTrue(DefaultGroovyMethods.or(true, null))
+ }
+
+ public void testBooleanAnd() {
+ assertTrue(DefaultGroovyMethods.and(true, true))
+ assertFalse(DefaultGroovyMethods.and(true, false))
+ assertFalse(DefaultGroovyMethods.and(false, true))
+ assertFalse(DefaultGroovyMethods.and(false, false))
+ assertFalse(DefaultGroovyMethods.and(false, null))
+ assertFalse(DefaultGroovyMethods.and(true, null))
+ }
+
+ public void testBooleanXor() {
+ assertFalse(DefaultGroovyMethods.xor(true, true))
+ assertTrue(DefaultGroovyMethods.xor(true, false))
+ assertTrue(DefaultGroovyMethods.xor(false, true))
+ assertFalse(DefaultGroovyMethods.xor(false, false))
+ assertFalse(DefaultGroovyMethods.xor(false, null))
+ assertTrue(DefaultGroovyMethods.xor(true, null))
+ }
+
+ public void testBooleanImplication() {
+ assertTrue(DefaultGroovyMethods.implies(true, true))
+ assertFalse(DefaultGroovyMethods.implies(true, false))
+ assertTrue(DefaultGroovyMethods.implies(false, true))
+ assertTrue(DefaultGroovyMethods.implies(false, false))
+ assertTrue(DefaultGroovyMethods.implies(false, null))
+ assertFalse(DefaultGroovyMethods.implies(true, null))
+ }
}