diff --git a/Mage/src/main/java/mage/filter/Filter.java b/Mage/src/main/java/mage/filter/Filter.java index 3f839a0f649..50d0cceeeae 100644 --- a/Mage/src/main/java/mage/filter/Filter.java +++ b/Mage/src/main/java/mage/filter/Filter.java @@ -1,10 +1,10 @@ - package mage.filter; +import mage.filter.predicate.Predicate; +import mage.game.Game; + import java.io.Serializable; import java.util.List; -import mage.filter.predicate.Predicate; -import mage.game.Game; /** * @param @@ -29,5 +29,9 @@ public interface Filter extends Serializable { Filter copy(); + public boolean isLockedFilter(); + + public void setLockedFilter(boolean lockedFilter); + List> getPredicates(); } diff --git a/Mage/src/main/java/mage/filter/FilterImpl.java b/Mage/src/main/java/mage/filter/FilterImpl.java index 704acf389e7..f7e9fe68aed 100644 --- a/Mage/src/main/java/mage/filter/FilterImpl.java +++ b/Mage/src/main/java/mage/filter/FilterImpl.java @@ -67,10 +67,12 @@ public abstract class FilterImpl implements Filter { return message; } + @Override public boolean isLockedFilter() { return lockedFilter; } + @Override public void setLockedFilter(boolean lockedFilter) { this.lockedFilter = lockedFilter; } diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index d4e89f178f9..07f78fcaf5c 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -752,6 +752,10 @@ public final class StaticFilters { public static final FilterPermanent FILTER_PERMANENT_EQUIPMENT = new FilterEquipmentPermanent(); + static { + FILTER_PERMANENT_EQUIPMENT.setLockedFilter(true); + } + public static final FilterPermanent FILTER_PERMANENT_FORTIFICATION = new FilterPermanent(); static { diff --git a/Mage/src/test/java/mage/StaticFilterTest.java b/Mage/src/test/java/mage/StaticFilterTest.java new file mode 100644 index 00000000000..326c94e542b --- /dev/null +++ b/Mage/src/test/java/mage/StaticFilterTest.java @@ -0,0 +1,29 @@ +package mage; + +import mage.filter.Filter; +import mage.filter.StaticFilters; +import org.junit.Assert; +import org.junit.Test; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +/** + * @author TheElk801 + */ +public class StaticFilterTest { + + @Test + public void testStaticFilters() throws IllegalAccessException { + for (Field field : StaticFilters.class.getFields()) { + Assert.assertTrue("Field must be public: " + field, Modifier.isPublic(field.getModifiers())); + Assert.assertTrue("Field must be static: " + field, Modifier.isStatic(field.getModifiers())); + Assert.assertTrue("Field must be final: " + field, Modifier.isFinal(field.getModifiers())); + Assert.assertTrue("Field name must start with \"FILTER_\"", field.getName().startsWith("FILTER_")); + Assert.assertEquals("Field name must be all upper case letters", field.getName().toUpperCase(), field.getName()); + Object filter = field.get(field.getType()); + Assert.assertTrue("Field must be a filter: " + field, filter instanceof Filter); + Assert.assertTrue("Field must be locked: " + field, ((Filter) filter).isLockedFilter()); + } + } +}