10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb', line 10
def checkClassModel(envUML)
mainPackage = envUML.find(:class => UML13::Package, :name => "HouseMetamodel").first
assert_not_nil mainPackage
subs = mainPackage.ownedElement.select{|e| e.is_a?(UML13::Package)}
assert_equal 1, subs.size
roomsPackage = subs.first
assert_equal "Rooms", roomsPackage.name
classes = mainPackage.ownedElement.select{|e| e.is_a?(UML13::Class)}
assert_equal 3, classes.size
houseClass = classes.find{|c| c.name == "House"}
personClass = classes.find{|c| c.name == "Person"}
meetingPlaceClass = classes.find{|c| c.name == "MeetingPlace"}
cookingPlaceInterface = mainPackage.ownedElement.find{|e| e.is_a?(UML13::Interface) && e.name == "CookingPlace"}
assert_not_nil houseClass
assert_not_nil personClass
assert_not_nil meetingPlaceClass
assert_not_nil cookingPlaceInterface
classes = roomsPackage.ownedElement.select{|e| e.is_a?(UML13::Class)}
assert_equal 3, classes.size
roomClass = classes.find{|c| c.name == "Room"}
kitchenClass = classes.find{|c| c.name == "Kitchen"}
bathroomClass = classes.find{|c| c.name == "Bathroom"}
assert_not_nil roomClass
assert_not_nil kitchenClass
assert_not_nil bathroomClass
assert_equal 2, roomClass.specialization.child.size
assert_not_nil roomClass.specialization.child.find{|c| c.name == "Kitchen"}
assert_not_nil roomClass.specialization.child.find{|c| c.name == "Bathroom"}
assert_equal 2, kitchenClass.generalization.parent.size
assert_equal roomClass.object_id, kitchenClass.generalization.parent.find{|c| c.name == "Room"}.object_id
assert_equal meetingPlaceClass.object_id, kitchenClass.generalization.parent.find{|c| c.name == "MeetingPlace"}.object_id
assert_equal 1, bathroomClass.generalization.parent.size
assert_equal roomClass.object_id, bathroomClass.generalization.parent.first.object_id
assert_not_nil kitchenClass.clientDependency.find{|d| d.stereotype.name == "implements"}
assert_equal cookingPlaceInterface.object_id, kitchenClass.clientDependency.supplier.find{|c| c.name == "CookingPlace"}.object_id
assert_equal kitchenClass.object_id, cookingPlaceInterface.supplierDependency.client.find{|c| c.name == "Kitchen"}.object_id
assert_equal 1, houseClass.localCompositeEnd.size
roomEnd = houseClass.localCompositeEnd.first.otherEnd
assert_equal UML13::Association, roomEnd.association.class
assert_equal roomClass.object_id, roomEnd.type.object_id
assert_equal "room", roomEnd.name
assert_equal UML13::Multiplicity, roomEnd.multiplicity.class
assert_equal "1", roomEnd.multiplicity.range.first.lower
assert_equal "*", roomEnd.multiplicity.range.first.upper
assert_equal 1, roomClass.remoteCompositeEnd.size
assert_equal houseClass.object_id, roomClass.remoteCompositeEnd.first.type.object_id
assert_equal "house", roomClass.remoteCompositeEnd.first.name
assert_equal 2, houseClass.remoteNavigableEnd.size
bathEnd = houseClass.remoteNavigableEnd.find{|e| e.name == "bathroom"}
kitchenEnd = houseClass.remoteNavigableEnd.find{|e| e.name== "kitchen"}
assert_not_nil bathEnd
assert_not_nil kitchenEnd
assert_equal UML13::Association, bathEnd.association.class
assert_equal UML13::Association, kitchenEnd.association.class
assert_equal "1", kitchenEnd.multiplicity.range.first.lower
assert_equal "1", kitchenEnd.multiplicity.range.first.upper
assert_equal 3, houseClass.localNavigableEnd.size
homeEnd = houseClass.localNavigableEnd.find{|e| e.name == "home"}
assert_not_nil homeEnd
assert_equal UML13::Association, homeEnd.association.class
assert_equal "0", homeEnd.multiplicity.range.first.lower
assert_equal "*", homeEnd.multiplicity.range.first.upper
assert_equal 4, houseClass.associationEnd.size
end
|