author | Claus Gittinger <cg@exept.de> |
Thu, 08 Nov 2012 01:16:29 +0100 | |
changeset 747 | 0b1b5e48be6f |
parent 746 | 4ac3ed420d3e |
child 997 | 7a764234c8da |
permissions | -rw-r--r-- |
567 | 1 |
"{ Package: 'exept:regression' }" |
2 |
||
3 |
"{ NameSpace: RegressionTests }" |
|
4 |
||
5 |
TestCase subclass:#CoverageInstrumentationTest |
|
6 |
instanceVariableNames:'' |
|
7 |
classVariableNames:'' |
|
8 |
poolDictionaries:'' |
|
9 |
category:'tests-Regression' |
|
10 |
! |
|
11 |
||
12 |
||
13 |
!CoverageInstrumentationTest methodsFor:'testFunctions'! |
|
14 |
||
747
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
15 |
calledByF6 |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
16 |
'dummy' |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
17 |
! |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
18 |
|
567 | 19 |
f1 |
20 |
^ 1234 |
|
21 |
! |
|
22 |
||
23 |
f2:aBoolean |
|
24 |
aBoolean ifTrue:[ |
|
25 |
^ 1234 |
|
26 |
]. |
|
27 |
^ 2345 |
|
28 |
! |
|
29 |
||
30 |
f3:aBoolean |
|
31 |
aBoolean ifTrue:[ |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
32 |
^ 1234 "both should be executed with a true arg, and coverage should see that" |
567 | 33 |
] ifFalse:[ |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
34 |
^ 2345 "bith should be executed with a true arg, and coverage should see that" |
567 | 35 |
]. |
36 |
^ 3456 |
|
37 |
! |
|
38 |
||
39 |
f4:aBoolean |
|
40 |
aBoolean ifFalse:[ |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
41 |
^ 1234 "should not be executed with a true arg, and coverage should see that" |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
42 |
]. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
43 |
! |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
44 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
45 |
f5:loopCount |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
46 |
1 to:loopCount do:[:i | |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
47 |
1 + 2 "should be executed 10 times, and coverage should see that" |
567 | 48 |
]. |
747
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
49 |
! |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
50 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
51 |
f6:loopCount |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
52 |
1 to:loopCount do:[:i | |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
53 |
self calledByF6 |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
54 |
]. |
567 | 55 |
! ! |
56 |
||
57 |
!CoverageInstrumentationTest methodsFor:'tests'! |
|
58 |
||
59 |
test_01_instrumentation |
|
60 |
|m1| |
|
61 |
||
62 |
self class recompile:#f1 usingCompilerClass:InstrumentingCompiler. |
|
63 |
||
64 |
m1 := (self class compiledMethodAt:#f1). |
|
65 |
||
66 |
self assert:(m1 hasBeenCalled not). |
|
67 |
||
68 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
69 |
InstrumentationContext runForCoverage:[ |
628 | 70 |
self f1. |
71 |
]. |
|
567 | 72 |
self assert:(m1 hasBeenCalled). |
73 |
||
74 |
" |
|
75 |
self new test_01_instrumentation |
|
76 |
" |
|
77 |
! |
|
78 |
||
79 |
test_02_instrumentation |
|
628 | 80 |
|m2 context| |
567 | 81 |
|
82 |
self class recompile:#f2: usingCompilerClass:InstrumentingCompiler. |
|
83 |
||
84 |
m2 := (self class compiledMethodAt:#f2:). |
|
85 |
||
86 |
self assert:(m2 hasBeenCalled not). |
|
87 |
self assert:(m2 blockInvocationInfo size == 1). |
|
88 |
self assert:(m2 statementInvocationInfo size == 1). |
|
89 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
90 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
91 |
||
92 |
"/ execute |
|
628 | 93 |
context := InstrumentationContext new. |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
94 |
context runForCoverage:[ |
628 | 95 |
self f2:true. |
96 |
]. |
|
567 | 97 |
self assert:(m2 hasBeenCalled). |
98 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
99 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
100 |
||
628 | 101 |
"/ execute in the same context |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
102 |
context runForCoverage:[ |
628 | 103 |
self f2:false. |
104 |
]. |
|
567 | 105 |
|
106 |
self assert:(m2 hasBeenCalled). |
|
107 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
108 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
109 |
||
110 |
" |
|
111 |
self new test_02_instrumentation |
|
112 |
" |
|
113 |
! |
|
114 |
||
115 |
test_03_instrumentation |
|
628 | 116 |
|m3 context| |
567 | 117 |
|
118 |
self class recompile:#f3: usingCompilerClass:InstrumentingCompiler. |
|
119 |
||
120 |
m3 := (self class compiledMethodAt:#f3:). |
|
121 |
||
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
122 |
"/ before execution |
567 | 123 |
self assert:(m3 hasBeenCalled not). |
124 |
self assert:(m3 blockInvocationInfo size == 2). |
|
125 |
self assert:(m3 statementInvocationInfo size == 1). |
|
126 |
self assert:(m3 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
127 |
self assert:(m3 blockInvocationInfo conform:[:i | i count == 0]). |
567 | 128 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
129 |
||
130 |
"/ execute |
|
628 | 131 |
context := InstrumentationContext new. |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
132 |
context runForCoverage:[ |
628 | 133 |
self f3:true. |
134 |
]. |
|
567 | 135 |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
136 |
"/ one block should have been invoked, the other not" |
567 | 137 |
self assert:(m3 hasBeenCalled). |
138 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted]) = 1. |
|
139 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted not]) = 1. |
|
140 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
141 |
||
142 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
143 |
context runForCoverage:[ |
628 | 144 |
self f3:false. |
145 |
]. |
|
567 | 146 |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
147 |
"/ both blocks should have been invoked" |
567 | 148 |
self assert:(m3 hasBeenCalled). |
149 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted]) = 2. |
|
150 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted not]) = 0. |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
151 |
self assert:(m3 blockInvocationInfo conform:[:i | i count == 1]). |
567 | 152 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
153 |
||
154 |
" |
|
155 |
self new test_03_instrumentation |
|
156 |
" |
|
157 |
! |
|
158 |
||
159 |
test_04_instrumentation |
|
160 |
|m4| |
|
161 |
||
162 |
self class recompile:#f4: usingCompilerClass:InstrumentingCompiler. |
|
163 |
||
164 |
m4 := (self class compiledMethodAt:#f4:). |
|
165 |
||
166 |
self assert:(m4 hasBeenCalled not). |
|
167 |
self assert:(m4 blockInvocationInfo size == 1). |
|
168 |
self assert:(m4 statementInvocationInfo size == 0). |
|
169 |
self assert:(m4 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
170 |
self assert:(m4 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
171 |
||
172 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
173 |
InstrumentationContext runForCoverage:[ |
628 | 174 |
self f4:true. |
175 |
]. |
|
567 | 176 |
|
177 |
self assert:(m4 hasBeenCalled). |
|
178 |
||
179 |
" |
|
180 |
self new test_04_instrumentation |
|
181 |
" |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
182 |
! |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
183 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
184 |
test_05_instrumentation_loop_count |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
185 |
|m5| |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
186 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
187 |
self class recompile:#f5: usingCompilerClass:InstrumentingCompiler. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
188 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
189 |
m5 := (self class compiledMethodAt:#f5:). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
190 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
191 |
self assert:(m5 hasBeenCalled not). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
192 |
self assert:(m5 blockInvocationInfo size == 1). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
193 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
194 |
"/ execute |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
195 |
InstrumentationContext run:[ |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
196 |
self f5:10. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
197 |
]. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
198 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
199 |
self assert:(m5 hasBeenCalled). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
200 |
self assert:(m5 blockInvocationInfo first count == 10). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
201 |
self assert:(m5 hasBeenCalled). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
202 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
203 |
" |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
204 |
self new test_05_instrumentation |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
205 |
" |
747
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
206 |
! |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
207 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
208 |
test_06_instrumentation_methodInvokationCount |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
209 |
|m| |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
210 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
211 |
self class recompile:#f6: usingCompilerClass:InstrumentingCompiler. |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
212 |
self class recompile:#calledByF6 usingCompilerClass:InstrumentingCompiler. |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
213 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
214 |
m := (self class compiledMethodAt:#calledByF6). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
215 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
216 |
self assert:(m hasBeenCalled not). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
217 |
self assert:(m methodInvocationInfo hasBeenCalled not). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
218 |
self assert:(m hasBeenCalled not). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
219 |
self assert:(m methodInvocationInfo count == 0). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
220 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
221 |
"/ execute |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
222 |
InstrumentationContext run:[ |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
223 |
self f6:10. |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
224 |
]. |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
225 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
226 |
self assert:(m hasBeenCalled). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
227 |
self assert:(m methodInvocationInfo count == 10). |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
228 |
|
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
229 |
" |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
230 |
self new test_06_instrumentation_methodInvokationCount |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
231 |
" |
567 | 232 |
! ! |
233 |
||
234 |
!CoverageInstrumentationTest class methodsFor:'documentation'! |
|
235 |
||
747
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
236 |
version |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
237 |
^ '$Header$' |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
238 |
! |
0b1b5e48be6f
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
746
diff
changeset
|
239 |
|
567 | 240 |
version_CVS |
241 |
^ '$Header$' |
|
242 |
! ! |