author | Claus Gittinger <cg@exept.de> |
Thu, 08 Nov 2012 01:10:35 +0100 | |
changeset 746 | 4ac3ed420d3e |
parent 628 | b248c1c1fec4 |
child 747 | 0b1b5e48be6f |
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 |
||
15 |
f1 |
|
16 |
^ 1234 |
|
17 |
! |
|
18 |
||
19 |
f2:aBoolean |
|
20 |
aBoolean ifTrue:[ |
|
21 |
^ 1234 |
|
22 |
]. |
|
23 |
^ 2345 |
|
24 |
! |
|
25 |
||
26 |
f3:aBoolean |
|
27 |
aBoolean ifTrue:[ |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
28 |
^ 1234 "both should be executed with a true arg, and coverage should see that" |
567 | 29 |
] ifFalse:[ |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
30 |
^ 2345 "bith should be executed with a true arg, and coverage should see that" |
567 | 31 |
]. |
32 |
^ 3456 |
|
33 |
! |
|
34 |
||
35 |
f4:aBoolean |
|
36 |
aBoolean ifFalse:[ |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
37 |
^ 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
|
38 |
]. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
39 |
! |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
40 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
41 |
f5:loopCount |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
42 |
1 to:loopCount do:[:i | |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
43 |
1 + 2 "should be executed 10 times, and coverage should see that" |
567 | 44 |
]. |
45 |
! ! |
|
46 |
||
47 |
!CoverageInstrumentationTest methodsFor:'tests'! |
|
48 |
||
49 |
test_01_instrumentation |
|
50 |
|m1| |
|
51 |
||
52 |
self class recompile:#f1 usingCompilerClass:InstrumentingCompiler. |
|
53 |
||
54 |
m1 := (self class compiledMethodAt:#f1). |
|
55 |
||
56 |
self assert:(m1 hasBeenCalled not). |
|
57 |
||
58 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
59 |
InstrumentationContext runForCoverage:[ |
628 | 60 |
self f1. |
61 |
]. |
|
567 | 62 |
self assert:(m1 hasBeenCalled). |
63 |
||
64 |
" |
|
65 |
self new test_01_instrumentation |
|
66 |
" |
|
67 |
! |
|
68 |
||
69 |
test_02_instrumentation |
|
628 | 70 |
|m2 context| |
567 | 71 |
|
72 |
self class recompile:#f2: usingCompilerClass:InstrumentingCompiler. |
|
73 |
||
74 |
m2 := (self class compiledMethodAt:#f2:). |
|
75 |
||
76 |
self assert:(m2 hasBeenCalled not). |
|
77 |
self assert:(m2 blockInvocationInfo size == 1). |
|
78 |
self assert:(m2 statementInvocationInfo size == 1). |
|
79 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
80 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
81 |
||
82 |
"/ execute |
|
628 | 83 |
context := InstrumentationContext new. |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
84 |
context runForCoverage:[ |
628 | 85 |
self f2:true. |
86 |
]. |
|
567 | 87 |
self assert:(m2 hasBeenCalled). |
88 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
89 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
90 |
||
628 | 91 |
"/ execute in the same context |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
92 |
context runForCoverage:[ |
628 | 93 |
self f2:false. |
94 |
]. |
|
567 | 95 |
|
96 |
self assert:(m2 hasBeenCalled). |
|
97 |
self assert:(m2 blockInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
98 |
self assert:(m2 statementInvocationInfo conform:[:i | i hasBeenExecuted]). |
|
99 |
||
100 |
" |
|
101 |
self new test_02_instrumentation |
|
102 |
" |
|
103 |
! |
|
104 |
||
105 |
test_03_instrumentation |
|
628 | 106 |
|m3 context| |
567 | 107 |
|
108 |
self class recompile:#f3: usingCompilerClass:InstrumentingCompiler. |
|
109 |
||
110 |
m3 := (self class compiledMethodAt:#f3:). |
|
111 |
||
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
112 |
"/ before execution |
567 | 113 |
self assert:(m3 hasBeenCalled not). |
114 |
self assert:(m3 blockInvocationInfo size == 2). |
|
115 |
self assert:(m3 statementInvocationInfo size == 1). |
|
116 |
self assert:(m3 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
117 |
self assert:(m3 blockInvocationInfo conform:[:i | i count == 0]). |
567 | 118 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
119 |
||
120 |
"/ execute |
|
628 | 121 |
context := InstrumentationContext new. |
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
122 |
context runForCoverage:[ |
628 | 123 |
self f3:true. |
124 |
]. |
|
567 | 125 |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
126 |
"/ one block should have been invoked, the other not" |
567 | 127 |
self assert:(m3 hasBeenCalled). |
128 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted]) = 1. |
|
129 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted not]) = 1. |
|
130 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
131 |
||
132 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
133 |
context runForCoverage:[ |
628 | 134 |
self f3:false. |
135 |
]. |
|
567 | 136 |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
137 |
"/ both blocks should have been invoked" |
567 | 138 |
self assert:(m3 hasBeenCalled). |
139 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted]) = 2. |
|
140 |
self assert:(m3 blockInvocationInfo count:[:i | i hasBeenExecuted not]) = 0. |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
141 |
self assert:(m3 blockInvocationInfo conform:[:i | i count == 1]). |
567 | 142 |
self assert:(m3 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
143 |
||
144 |
" |
|
145 |
self new test_03_instrumentation |
|
146 |
" |
|
147 |
! |
|
148 |
||
149 |
test_04_instrumentation |
|
150 |
|m4| |
|
151 |
||
152 |
self class recompile:#f4: usingCompilerClass:InstrumentingCompiler. |
|
153 |
||
154 |
m4 := (self class compiledMethodAt:#f4:). |
|
155 |
||
156 |
self assert:(m4 hasBeenCalled not). |
|
157 |
self assert:(m4 blockInvocationInfo size == 1). |
|
158 |
self assert:(m4 statementInvocationInfo size == 0). |
|
159 |
self assert:(m4 blockInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
160 |
self assert:(m4 statementInvocationInfo conform:[:i | i hasBeenExecuted not]). |
|
161 |
||
162 |
"/ execute |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
163 |
InstrumentationContext runForCoverage:[ |
628 | 164 |
self f4:true. |
165 |
]. |
|
567 | 166 |
|
167 |
self assert:(m4 hasBeenCalled). |
|
168 |
||
169 |
" |
|
170 |
self new test_04_instrumentation |
|
171 |
" |
|
746
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
172 |
! |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
173 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
174 |
test_05_instrumentation_loop_count |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
175 |
|m5| |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
176 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
177 |
self class recompile:#f5: usingCompilerClass:InstrumentingCompiler. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
178 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
179 |
m5 := (self class compiledMethodAt:#f5:). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
180 |
|
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
181 |
self assert:(m5 hasBeenCalled not). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
182 |
self assert:(m5 blockInvocationInfo size == 1). |
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 |
"/ execute |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
185 |
InstrumentationContext run:[ |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
186 |
self f5:10. |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
187 |
]. |
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 |
self assert:(m5 hasBeenCalled). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
190 |
self assert:(m5 blockInvocationInfo first count == 10). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
191 |
self assert:(m5 hasBeenCalled). |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
192 |
|
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 |
self new test_05_instrumentation |
4ac3ed420d3e
class: RegressionTests::CoverageInstrumentationTest
Claus Gittinger <cg@exept.de>
parents:
628
diff
changeset
|
195 |
" |
567 | 196 |
! ! |
197 |
||
198 |
!CoverageInstrumentationTest class methodsFor:'documentation'! |
|
199 |
||
200 |
version_CVS |
|
201 |
^ '$Header$' |
|
202 |
! ! |