-
-
Notifications
You must be signed in to change notification settings - Fork 354
/
RGClassDefinitionTest.extension.st
88 lines (79 loc) · 3.57 KB
/
RGClassDefinitionTest.extension.st
1
2
3
4
5
6
7
8
9
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
Extension { #name : #RGClassDefinitionTest }
{ #category : #'*Ring-Definitions-Tests-Monticello' }
RGClassDefinitionTest >> testAsClassDefinition3 [
| newClass newSlice |
newClass := OrderedCollection
asRingDefinitionWithMethods: true
withSuperclasses: false
withSubclasses: false
withPackages: false.
newSlice := newClass environment.
self assert: newClass methods size equals: OrderedCollection methods size.
self assert: newSlice isSlice.
self assert: newSlice classes size equals: 1.
self assert: (newSlice classNamed: #OrderedCollection) equals: newClass.
newClass := OrderedCollection
asRingDefinitionWithMethods: false
withSuperclasses: true
withSubclasses: false
withPackages: false.
newSlice := newClass environment.
self assert: newClass superclass isRingObject.
self assert: newClass superclass name equals: OrderedCollection superclass name.
self assert: newClass allSuperclasses size equals: OrderedCollection allSuperclasses size.
self assert: newClass superclass equals: (newSlice classNamed: newClass superclassName).
newClass := RGBehaviorDefinition
asRingDefinitionWithMethods: false
withSuperclasses: false
withSubclasses: true
withPackages: false.
newSlice := newClass environment.
self assert: newClass subclasses size equals: RGBehaviorDefinition subclasses size.
self assert: newClass allSubclasses size equals: RGBehaviorDefinition allSubclasses size.
self assert: (newClass subclasses allSatisfy: [ :each | newSlice classes values includes: each ]).
newClass := RGBehaviorDefinition
asRingDefinitionWithMethods: false
withSuperclasses: false
withSubclasses: false
withPackages: true.
newSlice := newClass environment.
self assert: newClass package name equals: #'Ring-Definitions-Core'.
self assert: (newSlice packageNamed: #'Ring-Definitions-Core') equals: newClass package.
self assert: newClass package classes size equals: 1.
self assert: newClass package classes values first equals: newClass.
newClass := Class
asRingDefinitionWithMethods: true
withSuperclasses: false
withSubclasses: false
withPackages: true.
newSlice := newClass environment.
self assert: newClass package name equals: #Kernel.
self assert: newClass extensionMethods notEmpty.
self assert: newSlice methods size equals: newClass methods size + newClass classSide methods size.
self assert: (newSlice packageNamed: #'Ring-Definitions-Core') methods size > 1
]
{ #category : #'*Ring-Definitions-Tests-Monticello' }
RGClassDefinitionTest >> testAsFullClassDefinition [
| rgClass |
rgClass := Class asRingDefinition.
self assertEmpty: rgClass methods.
self assert: rgClass superclass isNil.
self assertEmpty: rgClass subclasses.
self assert: rgClass package name equals: #Kernel.
rgClass := Class asFullRingDefinition.
self denyEmpty: rgClass methods.
self assert: (rgClass methodNamed: #asRingDefinition) package name equals: #'Ring-Definitions-Core'.
self assert: rgClass superclass notNil.
self assert: rgClass superclass name equals: #ClassDescription.
self denyEmpty: rgClass subclasses.
self assert: rgClass package notNil.
self assert: rgClass package equals: rgClass instanceSide package.
self assert: rgClass package name equals: #Kernel.
self assert: rgClass category equals: #'Kernel-Classes'.
self denyEmpty: rgClass extensionMethods.
self assert: rgClass superclass superclass isNil.
self assert: rgClass superclass package name equals: #Kernel.
self assert: rgClass subclasses first package name equals: #Kernel.
rgClass := RGClassDefinition classSide asFullRingDefinition.
self assert: rgClass package equals: rgClass instanceSide package
]