blob: 3bfa9a9806232d44e080c53ba033bccb5dca23c7 [file] [log] [blame]
modeltype ecore uses 'http://www.eclipse.org/emf/2002/Ecore';
transformation oclAllInstances(in inModel : ecore, out outModel : ecore);
main() {
var inClasses : Set(EClass) := inModel.objects()->select(oclIsKindOf(EClass))
->collect(oclAsType(EClass))->asSet();
var inClassesByAllInstances : Set(EClass) := EClass.allInstances();
assert fatal (2 = inClasses->size());
assert fatal (inClassesByAllInstances->size() = inClasses->size());
assert fatal (inClassesByAllInstances->includesAll(inClasses));
var c1 := object EClass {
name := 'outEClass1';
};
var c2 := object EClass {
name := 'outEClass2';
};
object EPackage {
name := 'pack';
eClassifiers += c1;
eClassifiers += c2;
};
var inClassesByAllInstances2 := EClass.allInstances();
assert fatal (inClassesByAllInstances2->size() = inClasses->size() + 2);
assert fatal (inClassesByAllInstances2->includes(c1));
assert fatal (inClassesByAllInstances2->includes(c2));
-- check non-nullity
var nonExisting : Set(EStructuralFeature) := EAttribute.allInstances();
assert fatal (nonExisting->size() = 0);
assert fatal (nonExisting <> null);
}