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); | |
} |