diff --git a/src/adql/parser/feature/FeatureSet.java b/src/adql/parser/feature/FeatureSet.java index e857e2dc569794361aeb1fdb26e21d3a9de49433..9310c899262b55b5fa5a82f517a376ec70f200bf 100644 --- a/src/adql/parser/feature/FeatureSet.java +++ b/src/adql/parser/feature/FeatureSet.java @@ -427,8 +427,8 @@ public class FeatureSet implements Iterable<LanguageFeature> { * @see #getAvailableFeatures() */ public final void unsupportAll() { - // unsupport all available features: - for(LanguageFeature feature : availableFeatures) + // unsupport all features currently supported: + for(LanguageFeature feature : this) unsupport(feature); // also unsupport any UDF: @@ -557,22 +557,22 @@ public class FeatureSet implements Iterable<LanguageFeature> { ********************************************************************** */ /*public static final LanguageFeature ILIKE = new LanguageFeature(FeatureType.ADQL_STRING, "ILIKE"); // TODO ILIKE - + public static final LanguageFeature UNION = new LanguageFeature(FeatureType.ADQL_SETS, "UNION"); // TODO UNION public static final LanguageFeature EXCEPT = new LanguageFeature(FeatureType.ADQL_SETS, "EXCEPT"); // TODO EXCEPT public static final LanguageFeature INTERSECT = new LanguageFeature(FeatureType.ADQL_SETS, "INTERSECT"); // TODO INTERSECT - + public static final LanguageFeature WITH = new LanguageFeature(FeatureType.ADQL_COMMON_TABLE, "WITH"); // TODO WITH - + public static final LanguageFeature CAST = new LanguageFeature(FeatureType.ADQL_TYPE, "CAST"); // TODO CAST - + public static final LanguageFeature IN_UNIT = new LanguageFeature(FeatureType.ADQL_UNIT, "IN_UNIT"); // TODO IN_UNIT - + public static final LanguageFeature BIT_AND = new LanguageFeature(FeatureType.ADQL_BITWISE, "BIT_AND"); // TODO BIT_AND public static final LanguageFeature BIT_OR = new LanguageFeature(FeatureType.ADQL_BITWISE, "BIT_OR"); // TODO BIT_OR public static final LanguageFeature BIT_XOR = new LanguageFeature(FeatureType.ADQL_BITWISE, "BIT_XOR"); // TODO BIT_XOR public static final LanguageFeature BIT_NOT = new LanguageFeature(FeatureType.ADQL_BITWISE, "BIT_NOT"); // TODO BIT_NOT - + public static final LanguageFeature OFFSET = new LanguageFeature(FeatureType.ADQL_OFFSET, "OFFSET"); // TODO OFFSET*/ /** All standard features available. diff --git a/test/adql/parser/feature/TestFeatureSet.java b/test/adql/parser/feature/TestFeatureSet.java index 1c273f017109f3d42f004446708fe1437cb8bbcc..e58fb7575ae2dab97dc5a63f9adbd8f51b993d3d 100644 --- a/test/adql/parser/feature/TestFeatureSet.java +++ b/test/adql/parser/feature/TestFeatureSet.java @@ -215,11 +215,17 @@ public class TestFeatureSet { public void testUnsupportAll() { FeatureSet set = new FeatureSet(true); + /* here is a custom Language Feature (i.e. not part of the + * availableFeatures list): */ + set.support(new LanguageFeature(LanguageFeature.TYPE_UDF, "foo(VARCHAR) -> BOOLEAN", true)); + + // unsupport all currently supported features: set.unsupportAll(); - for(LanguageFeature feat : FeatureSet.availableFeatures) { - assertNotNull(feat); - assertFalse(set.supportedFeatures.containsKey(feat.type)); - } + + // ensure the list of supported features is really empty: + assertEquals(0, set.supportedFeatures.size()); + + // ...and that no non-declared UDF is allowed: assertFalse(set.isAnyUdfAllowed()); }