Write more test cases examining behavior regarding type/subtype inheritance for both features and types in result specs, and language subsumption testing, using both containsType or containsFeature, with and without intersection.
Issues found include:
- Supertype with allFeatures sets allFeatures for all subtypes. Correct behavior: specifying allFeatures on a type should only imply allFeatures for features that are known for that type. Features introduced only in subtypes should not be included.
Serialization/deserialization ignores languages other than x-unspecified; it should support the full result-specification. potential (future?) use case: sending result specs to remote delegates.This was due to a misinterpretation of a javadoc comment. The getResultTypesAndFeatures() (with no arguments) previously was defined to skip any language tests when retreiving the types and features. This is quite different from filtering only those with language x-unspecified. Make sure any rework keeps this behavior. That being said, the extracted types and features are missing any language information.
- Assume a feature F introduced in a supertype T. A result spec T:F should be sufficient to return true for a test of T2:F, where T2 is a subtype ot T (currently returns false).
- The corner case where a result spec has type T with "allFeats" but type T and/or feature T:F doesn't exist in the type system - containsType("T") or containsFeature("T:F") should return true. Needed for backwards compatibility.