| modeltype ECORE "strict" uses "http://www.eclipse.org/emf/2002/Ecore"; |
| |
| transformation bug467600_OrderedSet(); |
| |
| main() { |
| |
| // test OrderedSet::union(OrderedSet) |
| // |
| do { |
| var cc1 : Set(OclAny) := OrderedSet{1}->union(OrderedSet{""}); |
| assert fatal (cc1->size() = 2); |
| assert fatal (cc1->includes(1)); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->union(OrderedSet{2}); |
| assert fatal (cc2->size() = 2); |
| assert fatal (cc2->includes(2)); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClassifier) := OrderedSet{object EClass{}}->union(OrderedSet{elem1}); |
| assert fatal (cc3->size() = 2); |
| assert fatal (cc3->includes(elem1)); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->union(OrderedSet{object EClass{}}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : Set(EClass) := OrderedSet{}->union(OrderedSet{object EClass{}}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->union(OrderedSet{}); |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Set(EClass) := OrderedSet{object EClass{}}->union(OrderedSet{}); |
| assert fatal (cc34->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{object EClass{}}->union(OrderedSet{elem2}); |
| assert fatal (cc4->size() = 2); |
| assert fatal (cc4->includes(elem2)); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{object EClass{}}->union(OrderedSet{elem3}); |
| assert fatal (cc5->size() = 2); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->union(OrderedSet{null}); |
| assert fatal (cc6->size() = 2); |
| assert fatal (cc6->includes(null)); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->union(OrderedSet{invalid}); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1}->union(OrderedSet{elem3}); |
| assert fatal (cc8->size() = 2); |
| assert fatal (cc8->includes(elem3)); |
| }; |
| |
| // test OrderedSet::union(Bag) |
| // |
| do { |
| var cc1 : Bag(OclAny) := OrderedSet{1}->union(Bag{""}); |
| assert fatal (cc1->size() = 2); |
| assert fatal (cc1->includes(1)); |
| |
| var cc2 : Bag(Integer) := OrderedSet{1}->union(Bag{2}); |
| assert fatal (cc2->size() = 2); |
| assert fatal (cc2->includes(2)); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Bag(EClassifier) := OrderedSet{object EClass{}}->union(Bag{elem1}); |
| assert fatal (cc3->size() = 2); |
| assert fatal (cc3->includes(elem1)); |
| |
| var cc31 : Bag(EClassifier) := OrderedSet{elem1}->union(Bag{object EClass{}}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : Bag(EClass) := OrderedSet{}->union(Bag{object EClass{}}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : Bag(OclVoid) := OrderedSet{}->union(Bag{}); |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Bag(EClass) := OrderedSet{object EClass{}}->union(Bag{}); |
| assert fatal (cc34->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Bag(EClass) := OrderedSet{object EClass{}}->union(Bag{elem2}); |
| assert fatal (cc4->size() = 2); |
| assert fatal (cc4->includes(elem2)); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Bag(Element) := OrderedSet{object EClass{}}->union(Bag{elem3}); |
| assert fatal (cc5->size() = 2); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Bag(EClass) := OrderedSet{object EClass{}}->union(Bag{null}); |
| assert fatal (cc6->size() = 2); |
| assert fatal (cc6->includes(null)); |
| |
| var cc7 : Bag(EClass) := OrderedSet{object EClass{}}->union(Bag{invalid}); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Bag(OclAny) := OrderedSet{1}->union(Bag{elem3}); |
| assert fatal (cc8->size() = 2); |
| assert fatal (cc8->includes(elem3)); |
| }; |
| |
| // test OrderedSet::intersection(OrderedSet) |
| // |
| do { |
| var cc1 : Set(Integer) := OrderedSet{1}->intersection(OrderedSet{""}); |
| assert fatal (cc1->size() = 0); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->intersection(OrderedSet{1}); |
| assert fatal (cc2->size() = 1); |
| assert fatal (cc2->includes(1)); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClass) := OrderedSet{object EClass{}}->intersection(OrderedSet{elem1}); |
| assert fatal (cc3->size() = 0); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->intersection(OrderedSet{object EClass{}}); |
| assert fatal (cc31->size() = 0); |
| |
| var cc32 : Set(OclVoid) := OrderedSet{}->intersection(OrderedSet{object EClass{}}); |
| assert fatal (cc32->size() = 0); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->intersection(OrderedSet{}); |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Set(EClass) := OrderedSet{object EClass{}}->intersection(OrderedSet{}); |
| assert fatal (cc34->size() = 0); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{elem2}->intersection(OrderedSet{elem2}); |
| assert fatal (cc4->size() = 1); |
| assert fatal (cc4->includes(elem2)); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{object EClass{}}->intersection(OrderedSet{elem3}); |
| assert fatal (cc5->size() = 0); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->intersection(OrderedSet{null}); |
| assert fatal (cc6->size() = 0); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->intersection(OrderedSet{invalid}); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1}->intersection(OrderedSet{elem3}); |
| assert fatal (cc8->size() = 0); |
| }; |
| |
| // test OrderedSet::intersection(Bag) |
| // |
| do { |
| var cc1 : Set(OclAny) := OrderedSet{1}->intersection(Bag{""}); |
| assert fatal (cc1->size() = 0); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->intersection(Bag{1}); |
| assert fatal (cc2->size() = 1); |
| assert fatal (cc2->includes(1)); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClass) := OrderedSet{object EClass{}}->intersection(Bag{elem1}); |
| assert fatal (cc3->size() = 0); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->intersection(Bag{object EClass{}}); |
| assert fatal (cc31->size() = 0); |
| |
| var cc32 : Set(EClass) := OrderedSet{}->intersection(Bag{object EClass{}}); |
| assert fatal (cc32->size() = 0); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->intersection(Bag{}); |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Set(EClass) := OrderedSet{object EClass{}}->intersection(Bag{}); |
| assert fatal (cc34->size() = 0); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{elem2}->intersection(Bag{elem2}); |
| assert fatal (cc4->size() = 1); |
| assert fatal (cc4->includes(elem2)); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{object EClass{}}->intersection(Bag{elem3}); |
| assert fatal (cc5->size() = 0); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->intersection(Bag{null}); |
| assert fatal (cc6->size() = 0); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->intersection(Bag{invalid}); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1}->intersection(Bag{elem3}); |
| assert fatal (cc8->size() = 0); |
| }; |
| |
| // test OrderedSet::-(OrderedSet) |
| // |
| do { |
| var cc1 : Set(Integer) := OrderedSet{1} - OrderedSet{""}; |
| assert fatal (cc1->size() = 1); |
| assert fatal (cc1->includes(1)); |
| |
| var cc2 : Set(Integer) := OrderedSet{1} - OrderedSet{1}; |
| assert fatal (cc2->size() = 0); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClass) := OrderedSet{object EClass{}} - OrderedSet{elem1}; |
| assert fatal (cc3->size() = 1); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1} - OrderedSet{object EClass{}}; |
| assert fatal (cc31->size() = 1); |
| assert fatal (cc31->includes(elem1)); |
| |
| // actually here should be Set(OclVoid) but OCL has a bug |
| var cc32 : Set(EClass) := OrderedSet{} - OrderedSet{object EClass{}}; |
| assert fatal (cc32->size() = 0); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{} - OrderedSet{}; |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Set(EClass) := OrderedSet{object EClass{}} - OrderedSet{}; |
| assert fatal (cc34->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{elem2} - OrderedSet{elem2}; |
| assert fatal (cc4->size() = 0); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{elem3} - OrderedSet{object EClass{}}; |
| assert fatal (cc5->size() = 1); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}} - OrderedSet{null}; |
| assert fatal (cc6->size() = 1); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}} - OrderedSet{invalid}; |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1} - OrderedSet{elem3}; |
| assert fatal (cc8->size() = 1); |
| assert fatal (cc8->includes(1)); |
| }; |
| |
| // test OrderedSet::including(o) |
| // |
| do { |
| var cc1 : Set(OclAny) := OrderedSet{1}->including(""); |
| assert fatal (cc1->size() = 2); |
| assert fatal (cc1->includes(1)); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->including(2); |
| assert fatal (cc2->size() = 2); |
| assert fatal (cc2->includes(2)); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClassifier) := OrderedSet{object EClass{}}->including(elem1); |
| assert fatal (cc3->size() = 2); |
| assert fatal (cc3->includes(elem1)); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->including(object EClass{}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : Set(EClass) := OrderedSet{}->including(object EClass{}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->including(null); |
| assert fatal (cc33->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{object EClass{}}->including(elem2); |
| assert fatal (cc4->size() = 2); |
| assert fatal (cc4->includes(elem2)); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{object EClass{}}->including(elem3); |
| assert fatal (cc5->size() = 2); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->including(null); |
| assert fatal (cc6->size() = 2); |
| assert fatal (cc6->includes(null)); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->including(invalid); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1}->including(elem3); |
| assert fatal (cc8->size() = 2); |
| assert fatal (cc8->includes(elem3)); |
| }; |
| |
| // test OrderedSet::excluding(o) |
| // |
| do { |
| var cc1 : Set(Integer) := OrderedSet{1}->excluding(""); |
| assert fatal (cc1->size() = 1); |
| assert fatal (cc1->includes(1)); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->excluding(1); |
| assert fatal (cc2->size() = 0); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClass) := OrderedSet{object EClass{}}->excluding(elem1); |
| assert fatal (cc3->size() = 1); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->excluding(object EClass{}); |
| assert fatal (cc31->size() = 1); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : Set(OclVoid) := OrderedSet{}->excluding(object EClass{}); |
| assert fatal (cc32->size() = 0); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->excluding(null); |
| assert fatal (cc33->size() = 0); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{elem2}->excluding(elem2); |
| assert fatal (cc4->size() = 0); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(EPackage) := OrderedSet{elem3}->excluding(object EClass{}); |
| assert fatal (cc5->size() = 1); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->excluding(null); |
| assert fatal (cc6->size() = 1); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->excluding(invalid); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(Integer) := OrderedSet{1}->excluding(elem3); |
| assert fatal (cc8->size() = 1); |
| assert fatal (cc8->includes(1)); |
| }; |
| |
| // test OrderedSet::symmetricDifference(OrderedSet) |
| // |
| do { |
| var cc1 : Set(OclAny) := OrderedSet{1}->symmetricDifference(OrderedSet{""}); |
| assert fatal (cc1->size() = 2); |
| assert fatal (cc1->includes("")); |
| |
| var cc2 : Set(Integer) := OrderedSet{1}->symmetricDifference(OrderedSet{1}); |
| assert fatal (cc2->size() = 0); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : Set(EClassifier) := OrderedSet{object EClass{}}->symmetricDifference(OrderedSet{elem1}); |
| assert fatal (cc3->size() = 2); |
| assert fatal (cc3->includes(elem1)); |
| |
| var cc31 : Set(EClassifier) := OrderedSet{elem1}->symmetricDifference(OrderedSet{object EClass{}}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : Set(EClass) := OrderedSet{}->symmetricDifference(OrderedSet{object EClass{}}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : Set(OclVoid) := OrderedSet{}->symmetricDifference(OrderedSet{}); |
| assert fatal (cc33->size() = 0); |
| |
| var cc34 : Set(EClass) := OrderedSet{object EClass{}}->symmetricDifference(OrderedSet{}); |
| assert fatal (cc34->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : Set(EClass) := OrderedSet{elem2}->symmetricDifference(OrderedSet{elem2}); |
| assert fatal (cc4->size() = 0); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : Set(Element) := OrderedSet{object EClass{}}->symmetricDifference(OrderedSet{elem3}); |
| assert fatal (cc5->size() = 2); |
| assert fatal (cc5->includes(elem3)); |
| |
| var cc6 : Set(EClass) := OrderedSet{object EClass{}}->symmetricDifference(OrderedSet{null}); |
| assert fatal (cc6->size() = 2); |
| assert fatal (cc6->includes(null)); |
| |
| var cc7 : Set(EClass) := OrderedSet{object EClass{}}->symmetricDifference(OrderedSet{invalid}); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : Set(OclAny) := OrderedSet{1}->symmetricDifference(OrderedSet{elem3}); |
| assert fatal (cc8->size() = 2); |
| assert fatal (cc8->includes(1)); |
| }; |
| |
| // test OrderedSet::append(o) and OrderedSet::indexOf(o) |
| // |
| do { |
| var cc1 : OrderedSet(OclAny) := OrderedSet{1}->append(""); |
| assert fatal (cc1->indexOf("") = 2); |
| |
| var cc2 : OrderedSet(Integer) := OrderedSet{1}->append(2); |
| assert fatal (cc2->indexOf(1) = 1); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : OrderedSet(EClassifier) := OrderedSet{object EClass{}}->append(elem1); |
| assert fatal (cc3->indexOf(elem1) = 2); |
| |
| var cc31 : OrderedSet(EClassifier) := OrderedSet{elem1}->append(object EClass{}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : OrderedSet(EClass) := OrderedSet{}->append(object EClass{}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : OrderedSet(OclVoid) := OrderedSet{}->append(null); |
| assert fatal (cc33->size() = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : OrderedSet(EClass) := OrderedSet{elem2}->append(elem2); |
| assert fatal (cc4->indexOf(elem2) = 1); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : OrderedSet(Element) := OrderedSet{object EClass{}}->append(elem3); |
| assert fatal (cc5->indexOf(elem3) = 2); |
| |
| var cc6 : OrderedSet(EClass) := OrderedSet{object EClass{}}->append(null); |
| assert fatal (cc6->indexOf(null) = 2); |
| |
| var cc7 : OrderedSet(EClass) := OrderedSet{object EClass{}}->append(invalid); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : OrderedSet(OclAny) := OrderedSet{1}->append(elem3); |
| assert fatal (cc8->indexOf(elem3) = 2); |
| }; |
| |
| // test OrderedSet::prepend(o) and OrderedSet::indexOf(o) |
| // |
| do { |
| var cc1 : OrderedSet(OclAny) := OrderedSet{1}->prepend(""); |
| assert fatal (cc1->indexOf("") = 1); |
| |
| var cc2 : OrderedSet(Integer) := OrderedSet{1}->prepend(2); |
| assert fatal (cc2->indexOf(1) = 2); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : OrderedSet(EClassifier) := OrderedSet{object EClass{}}->prepend(elem1); |
| assert fatal (cc3->indexOf(elem1) = 1); |
| |
| var cc31 : OrderedSet(EClassifier) := OrderedSet{elem1}->prepend(object EClass{}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->includes(elem1)); |
| |
| var cc32 : OrderedSet(EClass) := OrderedSet{}->prepend(object EClass{}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : OrderedSet(OclVoid) := OrderedSet{}->prepend(null); |
| assert fatal (cc33->size() = 1); |
| assert fatal (cc33->indexOf(null) = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : OrderedSet(EClass) := OrderedSet{elem2}->prepend(elem2); |
| assert fatal (cc4->indexOf(elem2) = 1); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : OrderedSet(Element) := OrderedSet{object EClass{}}->prepend(elem3); |
| assert fatal (cc5->indexOf(elem3) = 1); |
| |
| var cc6 : OrderedSet(EClass) := OrderedSet{object EClass{}}->prepend(null); |
| assert fatal (cc6->indexOf(null) = 1); |
| |
| var cc7 : OrderedSet(EClass) := OrderedSet{object EClass{}}->prepend(invalid); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : OrderedSet(OclAny) := OrderedSet{1}->prepend(elem3); |
| assert fatal (cc8->indexOf(elem3) = 1); |
| }; |
| |
| // test OrderedSet::insertAt(o) and OrderedSet::indexOf(o) |
| // |
| do { |
| var cc1 : OrderedSet(OclAny) := OrderedSet{1}->insertAt(1, ""); |
| assert fatal (cc1->indexOf("") = 1); |
| |
| var cc2 : OrderedSet(Integer) := OrderedSet{1}->insertAt(2, 2); |
| assert fatal (cc2->indexOf(1) = 1); |
| |
| var elem1 : EClassifier = object EClass{}; |
| var cc3 : OrderedSet(EClassifier) := OrderedSet{object EClass{}}->insertAt(1, elem1); |
| assert fatal (cc3->indexOf(elem1) = 1); |
| |
| var cc31 : OrderedSet(EClassifier) := OrderedSet{elem1}->insertAt(2, object EClass{}); |
| assert fatal (cc31->size() = 2); |
| assert fatal (cc31->indexOf(elem1) = 1); |
| |
| var cc32 : OrderedSet(EClass) := OrderedSet{}->insertAt(1, object EClass{}); |
| assert fatal (cc32->size() = 1); |
| |
| var cc33 : OrderedSet(OclVoid) := OrderedSet{}->insertAt(1, null); |
| assert fatal (cc33->size() = 1); |
| assert fatal (cc33->indexOf(null) = 1); |
| |
| var elem2 : EClass = object EClass{}; |
| var cc4 : OrderedSet(EClass) := OrderedSet{elem2}->insertAt(2, elem2); |
| assert fatal (cc4->indexOf(elem2) = 1); |
| |
| var elem3 : EPackage = object EPackage{}; |
| var cc5 : OrderedSet(Element) := OrderedSet{object EClass{}}->insertAt(1, elem3); |
| assert fatal (cc5->indexOf(elem3) = 1); |
| |
| var cc6 : OrderedSet(EClass) := OrderedSet{object EClass{}}->insertAt(2, null); |
| assert fatal (cc6->indexOf(null) = 2); |
| |
| var cc7 : OrderedSet(EClass) := OrderedSet{object EClass{}}->insertAt(1, invalid); |
| assert fatal (cc7->size().oclIsInvalid()); |
| |
| var cc8 : OrderedSet(OclAny) := OrderedSet{1}->insertAt(2, elem3); |
| assert fatal (cc8->indexOf(elem3) = 2); |
| }; |
| |
| // test OrderedSet::reverse() |
| // |
| do { |
| var cc1 : OrderedSet(Integer) := OrderedSet{1, 2}->reverse(); |
| assert fatal (cc1 = OrderedSet{2, 1}); |
| |
| var cc2 : OrderedSet(OclAny) := OrderedSet{1, ""}->reverse(); |
| assert fatal (cc2 = OrderedSet{"", 1}); |
| |
| var cc3 : OrderedSet(OclAny) := OrderedSet{Sequence{""}, Set{2}}->reverse(); |
| assert fatal (cc3 = OrderedSet{Set{2}, Sequence{""}}); |
| }; |
| |
| |
| // test Collection operations |
| // |
| do { |
| var c1 : OrderedSet(Integer) := OrderedSet{1}; |
| assert fatal(not c1->includes("")); |
| assert fatal(c1->excludes("")); |
| assert fatal(c1->count("") = 0); |
| |
| var c2 : Collection(String) := OrderedSet{""}; |
| assert fatal(not c1->includesAll(c2)); |
| assert fatal(c1->excludesAll(c2)); |
| assert fatal(c1 <> c2); |
| assert fatal(not (c1 = c2)); |
| }; |
| |
| do { |
| var v : EClass := object EClass{}; |
| var c1 : OrderedSet(EClassifier) := OrderedSet{v}; |
| assert fatal(c1->includes(v)); |
| assert fatal(not c1->excludes(v)); |
| assert fatal(c1->count(v) = 1); |
| |
| var c2 : Collection(EClass) := OrderedSet{v}; |
| assert fatal(c1->includesAll(c2)); |
| assert fatal(not c1->excludesAll(c2)); |
| assert fatal(not (c1 <> c2)); |
| assert fatal(c1 = c2); |
| }; |
| |
| do { |
| var v : EClassifier := object EClass{}; |
| var c1 : OrderedSet(EClass) := OrderedSet{v.oclAsType(EClass)}; |
| assert fatal(c1->includes(v)); |
| assert fatal(not c1->excludes(v)); |
| assert fatal(c1->count(v) = 1); |
| |
| var c2 : Collection(EClassifier) := OrderedSet{v}; |
| assert fatal(c1->includesAll(c2)); |
| assert fatal(not c1->excludesAll(c2)); |
| assert fatal(not (c1 <> c2)); |
| assert fatal(c1 = c2); |
| }; |
| |
| do { |
| var v : EClassifier := object EClass{}; |
| var c1 : OrderedSet(EPackage) := OrderedSet{object EPackage{}}; |
| assert fatal(not c1->includes(v)); |
| assert fatal(c1->excludes(v)); |
| assert fatal(c1->count(v) = 0); |
| |
| var c2 : Collection(EClassifier) := OrderedSet{object EClass{}}; |
| assert fatal(not c1->includesAll(c2)); |
| assert fatal(c1->excludesAll(c2)); |
| assert fatal(c1 <> c2); |
| assert fatal(not (c1 = c2)); |
| }; |
| |
| |
| // test operations from 11.7.3 OrderedSet (OCL 2.4) |
| do { |
| var c1 : OrderedSet(OclAny) := OrderedSet{1, "2"}; |
| var c2 : OrderedSet(String) := OrderedSet{"1", "2"}; |
| |
| // append (object: T) : OrderedSet(T) |
| var append : OrderedSet(String) := c2->append("3"); |
| assert fatal (append = OrderedSet{"1", "2", "3"}); |
| // prepend(object : T) : OrderedSet(T) |
| var prepend : OrderedSet(String) := c2->prepend("0"); |
| assert fatal (prepend = OrderedSet{"0", "1", "2"}); |
| // insertAt(index : Integer, object : T) : OrderedSet(T) |
| var insertAt : OrderedSet(String) := c2->insertAt(1, "0"); |
| assert fatal (insertAt = OrderedSet{"0", "1", "2"}); |
| // subOrderedSet(lower : Integer, upper : Integer) : OrderedSet(T) |
| var subset : OrderedSet(String) := c2->subOrderedSet(1, 1); |
| assert fatal (subset = OrderedSet{"1"}); |
| // at(i : Integer) : T |
| assert fatal (c1->at(1) = 1); |
| // indexOf(obj : T) : Integer |
| assert fatal (c1->indexOf(1) = 1); |
| // first() : T |
| assert fatal (c1->first() = 1); |
| // last() : T |
| assert fatal (c1->last() = "2"); |
| // reverse() : OrderedSet(T) |
| assert fatal (c1->reverse() = OrderedSet{"2", 1}); |
| // sum() : T |
| assert fatal (c1->sum().oclIsInvalid()); |
| // union(s : Set(T)) : Set(T) |
| var union : Set(OclAny) := c1->union(c2); |
| assert fatal (union = Set{1, "1", "2"}); |
| // union(bag : Bag(T)) : Bag(T) |
| var ubag : Bag(OclAny) := c1->union(Bag{2}); |
| assert fatal (ubag = Bag{1, 2, "2"}); |
| // = (s : Set(T)) : Boolean |
| assert fatal (not(c1 = c2)); |
| // intersection(s : Set(T)) : Set(T) |
| var set2 : Set(OclAny) := c1->intersection(c2); |
| assert fatal (set2 = Set{"2"}); |
| // intersection(bag : Bag(T)) : Set(T) |
| var bag2 : Set(OclAny) := c1->intersection(Bag{"2"}); |
| assert fatal (bag2 = Set{"2"}); |
| // - (s : Set(T)) : Set(T) |
| var set3 : Set(OclAny) := c1 - c2; |
| assert fatal (set3 = Set{1}); |
| // including(object : T) : Set(T) |
| var set4 : Set(OclAny) := c2->including(2); |
| assert fatal (set4 = Set{2, "1", "2"}); |
| // excluding(object : T) : Set(T) |
| var set5 : Set(OclAny) := c2->excluding(1); |
| assert fatal (set5 = Set{"1", "2"}); |
| // symmetricDifference(s : Set(T)) : Set(T) |
| var set6 : Set(OclAny) := c1->symmetricDifference(c2); |
| assert fatal (set6 = Set{1, "1"}); |
| // count(object : T) : Integer |
| assert fatal (c1->count(1.1) = 0); |
| // <> (c : Collection(T)) : Boolean |
| assert fatal (c1 <> c2); |
| // size() : Integer |
| assert fatal (c1->size() = 2); |
| // includes(object : T) : Boolean |
| assert fatal (c1->includes(1)); |
| // excludes(object : T) : Boolean |
| assert fatal (c1->excludes(2)); |
| // count(object : T) : Integer |
| assert fatal (c1->count("2") = 1); |
| // includesAll(c2 : Collection(T)) : Boolean |
| assert fatal (c1->includesAll(Bag{1})); |
| // excludesAll(c2 : Collection(T)) : Boolean |
| assert fatal (c1->excludesAll(Sequence{2})); |
| // isEmpty() : Boolean |
| assert fatal (c1->isEmpty() = false); |
| // notEmpty() : Boolean |
| assert fatal (c1->notEmpty()); |
| // max() : T |
| var max : Integer := OrderedSet{1, 2}->max(); |
| assert fatal (max = 2); |
| // min() : T |
| var min : Integer := OrderedSet{1, 2}->min(); |
| assert fatal (min = 1); |
| // sum() : T |
| var sum : Integer := OrderedSet{1, 2}->sum(); |
| assert fatal (sum = 3); |
| // product(c2: Collection(T2)) : Set( Tuple( first: T, second: T2) ) |
| var prod : Set(Tuple(first:OclAny, second:String)) := c1->product(c2); |
| assert fatal (prod = Set{Tuple{first:OclAny = '2', second:String = '2'}, Tuple{first:OclAny = '2', second:String = '1'}, Tuple{first:OclAny = 1, second:String = '1'}, Tuple{first:OclAny = 1, second:String = '2'}}); |
| // selectByKind(type : Classifier) : Set(T) |
| var selKind : OrderedSet(Integer) := c1->selectByKind(Integer); |
| assert fatal (selKind = OrderedSet{1}); |
| assert fatal (selKind <> Set{1}); |
| // selectByType(type : Classifier) : Set(T) |
| var selType : OrderedSet(String) := c1->selectByType(String); |
| assert fatal (selType = OrderedSet{"2"}); |
| assert fatal (selType <> Set{"2"}); |
| // asSet() : Set(T) |
| var set : Set(OclAny) := c1->asSet(); |
| assert fatal (set = Set{1, "2"}); |
| // asOrderedSet() : OrderedSet(T) |
| var orderedSet : OrderedSet(OclAny) := c1->asOrderedSet(); |
| assert fatal (orderedSet = OrderedSet{1, "2"}); |
| // asSequence() : Sequence(T) |
| var sequence : Sequence(OclAny) := c1->asSequence(); |
| assert fatal (sequence = Sequence{1, "2"}); |
| // asBag() : Bag(T) |
| var bag : Bag(OclAny) := c1->asBag(); |
| assert fatal (bag = Bag{1, "2"}); |
| // asList() : List(T) |
| var list : List(OclAny) := c1->asList(); |
| assert fatal (list = List{1, "2"}); |
| // flatten() : Set(T2) |
| var flat : Set(OclAny) := c1->flatten(); |
| assert fatal (flat = c1); |
| }; |
| |
| } |