-
-
Notifications
You must be signed in to change notification settings - Fork 353
/
ClyClassDefinitionEditorToolMorphTest.class.st
158 lines (136 loc) · 4.62 KB
/
ClyClassDefinitionEditorToolMorphTest.class.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
"
A ClyClassDefinitionEditorToolMorphTest is a test class for testing the behavior of ClyClassDefinitionEditorToolMorph
"
Class {
#name : #ClyClassDefinitionEditorToolMorphTest,
#superclass : #TestCase,
#instVars : [
'classDefinitionEditor',
'editor',
'className'
],
#category : #'Calypso-SystemTools-Core-Tests-Editors-Classes'
}
{ #category : #helper }
ClyClassDefinitionEditorToolMorphTest >> checkClassDoesntExists [
(self class environment classNamed: className) ifNotNil: [ self error: 'Need to rename test class to not override existing class' ].
]
{ #category : #helper }
ClyClassDefinitionEditorToolMorphTest >> classExists [
^ (self class environment classNamed: className) isNotNil
]
{ #category : #helper }
ClyClassDefinitionEditorToolMorphTest >> deleteClassIfExists [
| instaledClass |
instaledClass := self class environment classNamed: className.
instaledClass ifNil:[ ^ self ].
instaledClass removeFromSystem
]
{ #category : #running }
ClyClassDefinitionEditorToolMorphTest >> setUp [
| context browser containerTab methodGroupQuery |
super setUp.
className := #MyClass.
context := MockClyFullBrowserClassContext new.
methodGroupQuery := MockMethodGroupQuery new.
browser := (ClyFullBrowserBlockingUI on: ClyNavigationEnvironment currentImage)
methodGroupQuery: methodGroupQuery;
yourself.
containerTab := MockClyContainerTab new.
editor := ClyClassDefinitionEditorToolMorph new
browser: nil;
context: context;
containerTab: containerTab;
browser: browser;
setUpModelFromContext;
build;
yourself.
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptASyntaxErroredDefinitionFailsWithoutTryingToCompileAsMethod [
editor textMorph appendText: 'Object << #MyClass
slots: { #s #s };
package: ''Calypso-SystemQueries-Tests'''.
editor applyChanges.
self error
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptASyntaxErroredFluidDefinitionFailsWithoutTryingToCompileAsMethod [
editor textMorph setTextWith:
'Object << #', className , '
slots: { #s #s };
package: ''Calypso-SystemTools-Core-Tests'''.
editor applyChanges.
self assert: editor textMorph text string equals:
'Object << #MyClass
slots: { #s # End of statement expected ->s };
package: ''Calypso-SystemTools-Core-Tests'''
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptASyntaxErroredMethodShouldFailCompilationAsMethod [
"failing compilation of a method definition & a fluid class definition should treat their own syntax errors"
editor textMorph setTextWith:
'banana^'.
editor applyChanges.
self assert: editor textMorph text string equals:
'banana^ Variable or expression expected ->'
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptASyntaxErroredTraitDefinitionFailsWithoutTryingToCompileAsMethod [
editor textMorph setTextWith:
'Object << #', className , '
slots: { #s #s };
package: ''Calypso-SystemTools-Core-Tests'''.
editor applyChanges.
self assert: editor textMorph text string equals:
'Object << #MyClass
slots: { #s # End of statement expected ->s };
package: ''Calypso-SystemTools-Core-Tests'''.
self error: #todo
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptAWellWrittenClassDefinitionRegistersIt [
self checkClassDoesntExists.
[
editor textMorph setTextWith:
'Object subclass: ' , className , '
instanceVariableNames: ''
classVariableNames: ''
package: ''Calypso-SystemTools-Core-Tests'''.
editor applyChanges.
self assert: self classExists.
] ensure: [ self deleteClassIfExists ].
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptAWellWrittenFluidClassDefinitionRegistersIt [
self checkClassDoesntExists.
[
editor textMorph setTextWith:
'Object << #', className , '
slots: { };
package: ''Calypso-SystemTools-Core-Tests'''.
editor applyChanges.
self assert: self classExists.
] ensure: [ self deleteClassIfExists ].
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptAWellWrittenMethodRegistersIt [
| selector |
selector := #banana.
(self class lookupSelector: selector) ifNotNil: [ self error: 'I might overide an important behavior' ].
[
editor textMorph setTextWith:
selector , '
^ 1'.
editor applyChanges.
self assert: (self class methodDict includes: selector).
] ensure: [ self class removeSelector: selector ].
]
{ #category : #test }
ClyClassDefinitionEditorToolMorphTest >> testAcceptAWellWrittenTraitDefinitionRegistersIt [
self error: #todo.
editor textMorph appendText: 'Object << #MyClass
slots: { #s #s };
package: ''Calypso-SystemQueries-Tests'''.
editor applyChanges .
]