From 8c95275e863799f394dc3e2efee899cdd18a3eda Mon Sep 17 00:00:00 2001 From: kokodyn Date: Thu, 14 Jan 2021 18:20:02 +0100 Subject: [PATCH] Xor extends ScalarEnvelope and returns false for empty iterable Signed-off-by: kokodyn --- src/main/java/org/cactoos/scalar/Xor.java | 24 +++++++------------ src/test/java/org/cactoos/scalar/XorTest.java | 4 ++-- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/cactoos/scalar/Xor.java b/src/main/java/org/cactoos/scalar/Xor.java index 3f27a01a67..3bef49d1cc 100644 --- a/src/main/java/org/cactoos/scalar/Xor.java +++ b/src/main/java/org/cactoos/scalar/Xor.java @@ -61,12 +61,7 @@ * @see IoChecked * @since 0.49 */ -public final class Xor implements Scalar { - - /** - * The iterable. - */ - private final Iterable> origin; +public final class Xor extends ScalarEnvelope { /** * Ctor. @@ -82,15 +77,12 @@ public Xor(final Scalar... scalar) { * @param iterable The iterable. */ public Xor(final Iterable> iterable) { - this.origin = iterable; - } - - @Override - public Boolean value() throws Exception { - return new Ternary<>( - new LengthOf(this.origin).value() > 0, - new Reduced((a, b) -> a ^ b, this.origin), - new True() - ).value(); + super( + new Ternary<>( + () -> new LengthOf(iterable).value() > 0, + new Reduced((a, b) -> a ^ b, iterable), + new False() + ) + ); } } diff --git a/src/test/java/org/cactoos/scalar/XorTest.java b/src/test/java/org/cactoos/scalar/XorTest.java index 9d43781d0b..8093a5f41c 100644 --- a/src/test/java/org/cactoos/scalar/XorTest.java +++ b/src/test/java/org/cactoos/scalar/XorTest.java @@ -109,9 +109,9 @@ void singleFalse() throws Exception { @Test void emptyIterable() throws Exception { new Assertion<>( - "Empty iterable must be True", + "Empty iterable must be False", new Xor(new IterableOf>()), - new ScalarHasValue<>(true) + new ScalarHasValue<>(false) ).affirm(); }