blob: 96c1c257fb70299557c89a6464600d9d47b0f04c [file] [log] [blame]
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);
};
}