diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/GainAbilityDependenciesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/GainAbilityDependenciesTest.java index 9ebddab5b2e..78e4bf1abca 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/GainAbilityDependenciesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/GainAbilityDependenciesTest.java @@ -34,22 +34,30 @@ public class GainAbilityDependenciesTest extends CardTestPlayerBase { SubType.HUMAN.getPredicate(), SubType.ORC.getPredicate()) )); + FilterPermanent filterNotTree = new FilterPermanent("tree"); + filterNotTree.add(Predicates.not( + Predicates.or( + SubType.HUMAN.getPredicate(), + SubType.ORC.getPredicate()) + )); ContinuousEffectImpl effectEmpty = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, filterEmpty); ContinuousEffectImpl effectSubtype = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, filterSubtype); ContinuousEffectImpl effectOr = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, filterOr); ContinuousEffectImpl effectTree = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, filterTree); + ContinuousEffectImpl effectNotTree = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, filterNotTree); Assert.assertFalse("must haven't depends with empty filter", effectEmpty.getDependedToTypes().contains(DependencyType.AddingCreatureType)); Assert.assertTrue("must have depend from subtype predicate", effectSubtype.getDependedToTypes().contains(DependencyType.AddingCreatureType)); Assert.assertTrue("must have depend from or predicate", effectOr.getDependedToTypes().contains(DependencyType.AddingCreatureType)); Assert.assertTrue("must have depend from tree predicate", effectTree.getDependedToTypes().contains(DependencyType.AddingCreatureType)); + Assert.assertTrue("must have depend from not-tree predicate", effectNotTree.getDependedToTypes().contains(DependencyType.AddingCreatureType)); } /** * I had an elephant token equipped with Amorphous Axe attacking and a Tempered Sliver in play. The token did combat * damage to a player but it didnt get the +1/+1 counter it hsould be getting. - * + *

* More details: https://github.com/magefree/mage/issues/6147 */ @Test diff --git a/Mage/src/main/java/mage/filter/predicate/Predicates.java b/Mage/src/main/java/mage/filter/predicate/Predicates.java index 2b4f989d9c8..33ff0d2cc76 100644 --- a/Mage/src/main/java/mage/filter/predicate/Predicates.java +++ b/Mage/src/main/java/mage/filter/predicate/Predicates.java @@ -1,4 +1,3 @@ - package mage.filter.predicate; import mage.game.Game; @@ -69,7 +68,7 @@ public final class Predicates { * @return */ public static Predicate and(Predicate first, Predicate second) { - return new AndPredicate(Predicates.asList(checkNotNull(first), checkNotNull(second))); + return new AndPredicate(Predicates.asList(checkNotNull(first), checkNotNull(second))); } /** @@ -110,7 +109,7 @@ public final class Predicates { * @return */ public static Predicate or(Predicate first, Predicate second) { - return new OrPredicate(Predicates.asList(first, second)); + return new OrPredicate(Predicates.asList(first, second)); } /** @@ -188,7 +187,7 @@ public final class Predicates { @SuppressWarnings("unchecked") private static List> asList(Predicate first, Predicate second) { - return Arrays.>asList(first, second); + return Arrays.asList(first, second); } private static List defensiveCopy(T... array) { @@ -231,7 +230,7 @@ public final class Predicates { */ public static void collectAllComponents(Predicate predicate, List res) { if (predicate instanceof NotPredicate) { - res.add(((NotPredicate) predicate).predicate); + collectAllComponents(((NotPredicate) predicate).predicate, res); } else if (predicate instanceof AndPredicate) { collectAllComponents(((AndPredicate) predicate).components, res); } else if (predicate instanceof OrPredicate) {