author | Jan Vrany <jan.vrany@labware.com> |
Fri, 18 Jun 2021 17:01:51 +0100 | |
branch | jv |
changeset 2598 | 5e6256e136d4 |
parent 1974 | f2eaf05205d6 |
permissions | -rwxr-xr-x |
1974 | 1 |
" |
2 |
COPYRIGHT (c) Claus Gittinger / eXept Software AG |
|
3 |
COPYRIGHT (c) 2017 Jan Vrany |
|
4 |
All Rights Reserved |
|
5 |
||
6 |
This software is furnished under a license and may be used |
|
7 |
only in accordance with the terms of that license and with the |
|
8 |
inclusion of the above copyright notice. This software may not |
|
9 |
be provided or otherwise made available to, or used by, any |
|
10 |
other person. No title to or ownership of the software is |
|
11 |
hereby transferred. |
|
12 |
" |
|
1447 | 13 |
"{ Package: 'stx:goodies/regression' }" |
638 | 14 |
|
15 |
"{ NameSpace: RegressionTests }" |
|
16 |
||
17 |
TestCase subclass:#STCCompilerTests |
|
18 |
instanceVariableNames:'' |
|
19 |
classVariableNames:'' |
|
20 |
poolDictionaries:'' |
|
1166 | 21 |
category:'tests-Regression-Compilers' |
638 | 22 |
! |
23 |
||
24 |
!STCCompilerTests class methodsFor:'documentation'! |
|
25 |
||
1974 | 26 |
copyright |
27 |
" |
|
28 |
COPYRIGHT (c) Claus Gittinger / eXept Software AG |
|
29 |
COPYRIGHT (c) 2017 Jan Vrany |
|
30 |
All Rights Reserved |
|
31 |
||
32 |
This software is furnished under a license and may be used |
|
33 |
only in accordance with the terms of that license and with the |
|
34 |
inclusion of the above copyright notice. This software may not |
|
35 |
be provided or otherwise made available to, or used by, any |
|
36 |
other person. No title to or ownership of the software is |
|
37 |
hereby transferred. |
|
38 |
" |
|
39 |
! |
|
40 |
||
638 | 41 |
documentation |
42 |
" |
|
43 |
documentation to be added. |
|
44 |
||
45 |
[author:] |
|
1447 | 46 |
cg |
638 | 47 |
|
48 |
[instance variables:] |
|
49 |
||
50 |
[class variables:] |
|
51 |
||
52 |
[see also:] |
|
53 |
||
54 |
" |
|
55 |
! ! |
|
56 |
||
57 |
!STCCompilerTests methodsFor:'code templates'! |
|
58 |
||
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
59 |
inlinedBlockVariables1 |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
60 |
"stc generates wrong code for inlined variables" |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
61 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
62 |
| b | |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
63 |
|
1447 | 64 |
b := [:arg1 | |
65 |
|local1| |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
66 |
|
1447 | 67 |
local1 := #local1. |
68 |
1 to:3 do:[:argb_1 | |
|
69 |
|localb_1 localb_2| |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
70 |
|
1447 | 71 |
localb_1 := #localb_1. |
72 |
localb_2 := #localb_2. |
|
73 |
1 to:5 do:[:argbb_1 | |
|
74 |
|localbb_1 localbb_2| |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
75 |
|
1447 | 76 |
localbb_1 := #localbb_1. |
77 |
localbb_2 := #localbb_2. |
|
78 |
argbb_1 == 3 ifTrue:[ |
|
79 |
^ [:argbbb_1 | |
|
80 |
|localbbb_1 localbbb_2| |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
81 |
|
1447 | 82 |
localbbb_1 := #localbbb_1. |
83 |
localbbb_2 := #localbbb_2. |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
84 |
|
1447 | 85 |
localb_1 "/ here, in old stc versions, localb_2 is returned |
86 |
]. |
|
87 |
]. |
|
88 |
] |
|
89 |
] |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
90 |
]. |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
91 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
92 |
^ b value:#arg1 |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
93 |
! |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
94 |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
95 |
inlinedBlockVariables2 |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
96 |
"stc generates wrong code for inlined variables" |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
97 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
98 |
| b | |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
99 |
|
1447 | 100 |
b := [:arg1 | |
101 |
|local1| |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
102 |
|
1447 | 103 |
local1 := #local1. |
104 |
1 to:3 do:[:argb_1 | |
|
105 |
|localb_1 localb_2| |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
106 |
|
1447 | 107 |
localb_1 := #localb_1. |
108 |
localb_2 := #localb_2. |
|
109 |
1 to:5 do:[:argbb_1 | |
|
110 |
|localbb_1 localbb_2| |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
111 |
|
1447 | 112 |
localbb_1 := #localbb_1. |
113 |
localbb_2 := #localbb_2. |
|
114 |
argbb_1 == 3 ifTrue:[ |
|
115 |
^ [:argbbb_1 | |
|
116 |
|localbbb_1 localbbb_2| |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
117 |
|
1447 | 118 |
localbbb_1 := #localbbb_1. |
119 |
localbbb_2 := #localbbb_2. |
|
120 |
argbb_1 |
|
121 |
]. |
|
122 |
]. |
|
123 |
] |
|
124 |
] |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
125 |
]. |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
126 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
127 |
^ b value:#arg1 |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
128 |
! |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
129 |
|
638 | 130 |
nextLittleEndianNumber: n from:bytes |
131 |
"stc generates wrong code for the following s := assignment" |
|
132 |
||
133 |
| s | |
|
134 |
||
135 |
s := 0. |
|
136 |
n to: 1 by: -1 do: [:i | s := (s bitShift: 8) bitOr: (bytes at: i)]. |
|
137 |
^ s |
|
138 |
||
139 |
"Created: / 17-09-2011 / 10:32:29 / cg" |
|
140 |
! ! |
|
141 |
||
142 |
!STCCompilerTests methodsFor:'tests'! |
|
143 |
||
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
144 |
test01_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
145 |
"checks for an stc compiler bug (detected Sep 2011). |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
146 |
stc generates bad code for the bitOr expression in nextLittleEndianNumber" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
147 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
148 |
Class withoutUpdatingChangesDo:[ |
1447 | 149 |
(STCCompilerInterface new) |
150 |
compileToMachineCode:'hello |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
151 |
%{ |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
152 |
console_printf("hello world\n"); |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
153 |
%} |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
154 |
' |
1447 | 155 |
forClass:self class |
156 |
selector:#'hello' |
|
157 |
inCategory:'tests' |
|
158 |
notifying:nil |
|
159 |
install:true |
|
160 |
skipIfSame:false |
|
161 |
silent:true. |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
162 |
|
1447 | 163 |
self hello. |
164 |
self class removeSelector:#hello. |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
165 |
]. |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
166 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
167 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
168 |
self run:#test01_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
169 |
self new test01_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
170 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
171 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
172 |
"Created: / 17-09-2011 / 10:32:18 / cg" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
173 |
! |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
174 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
175 |
test02_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
176 |
"checks for an stc compiler bug (detected Sep 2011). |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
177 |
stc generates bad code for the bitOr expression in nextLittleEndianNumber" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
178 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
179 |
|val| |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
180 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
181 |
Class withoutUpdatingChangesDo:[ |
1447 | 182 |
(STCCompilerInterface new) |
183 |
compileToMachineCode:'x123 |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
184 |
%{ |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
185 |
RETURN(__MKSMALLINT(123)); |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
186 |
%} |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
187 |
' |
1447 | 188 |
forClass:self class |
189 |
selector:#'x123' |
|
190 |
inCategory:'tests' |
|
191 |
notifying:nil |
|
192 |
install:true |
|
193 |
skipIfSame:false |
|
194 |
silent:true. |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
195 |
|
1447 | 196 |
val := self x123. |
197 |
self assert:(val == 123). |
|
198 |
self class removeSelector:#x123. |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
199 |
]. |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
200 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
201 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
202 |
self run:#test02_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
203 |
self new test02_compilation |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
204 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
205 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
206 |
"Created: / 17-09-2011 / 10:32:18 / cg" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
207 |
! |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
208 |
|
994
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
209 |
test03_compilation |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
210 |
"As of 2013-09-04, instance variables of Class are not visible |
1447 | 211 |
in class methods of ordinary classes. |
1360 | 212 |
For bytecode-compiled method they are. |
994
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
213 |
|
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
214 |
This tests checks for this bug. |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
215 |
" |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
216 |
|
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
217 |
|val| |
995
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
218 |
[ |
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
219 |
Class withoutUpdatingChangesDo:[ |
1447 | 220 |
"/ Check bytecode version first... |
221 |
self class class compile:'returnMyName |
|
995
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
222 |
^ name |
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
223 |
'. |
1447 | 224 |
val := self class returnMyName. |
225 |
self assert:(val == self class name). |
|
226 |
self class class removeSelector:#returnMyName. |
|
994
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
227 |
|
1447 | 228 |
"/ Now, compile the same source using stc and check... |
229 |
(STCCompilerInterface new) |
|
230 |
compileToMachineCode:'returnMyName |
|
995
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
231 |
^ name |
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
232 |
' |
1447 | 233 |
forClass:self class class |
234 |
selector:#'returnMyName' |
|
235 |
inCategory:'tests' |
|
236 |
notifying:nil |
|
237 |
install:true |
|
238 |
skipIfSame:false |
|
239 |
silent:true. |
|
994
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
240 |
|
1447 | 241 |
val := self class returnMyName. |
242 |
self assert:(val == self class name). |
|
243 |
self class class removeSelector:#returnMyName. |
|
995
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
244 |
]. |
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
245 |
] ensure:[ |
1447 | 246 |
self class class removeSelector:#returnMyName. |
995
676127617c9e
Oops, fixed method removal.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
994
diff
changeset
|
247 |
] |
994
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
248 |
|
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
249 |
" |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
250 |
self run:#test02_compilation |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
251 |
self new test02_compilation |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
252 |
" |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
253 |
|
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
254 |
"Created: / 04-09-2013 / 09:35:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
255 |
! |
914cf744f89e
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
894
diff
changeset
|
256 |
|
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
257 |
test04_doubleArraySize_bug |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
258 |
|
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
259 |
"As of 2014-03-11, __doubleArraySize() seem to return off-by-one size |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
260 |
on Windows. Under Linux it seem to work just fine. |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
261 |
|
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
262 |
This tests checks for this bug. |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
263 |
" |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
264 |
|
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
265 |
| sizes | |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
266 |
[ |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
267 |
Class withoutUpdatingChangesDo:[ |
1447 | 268 |
(STCCompilerInterface new) |
269 |
compileToMachineCode:'doubleArraySize |
|
270 |
| arr size1 size2 | |
|
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
271 |
|
1447 | 272 |
arr := DoubleArray new: 8. |
273 |
size1 := arr size. |
|
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
274 |
%{ |
1447 | 275 |
size2 = __MKINT(__doubleArraySize(arr)); |
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
276 |
%}. |
1447 | 277 |
^ Array with: size1 with: size2. |
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
278 |
' |
1447 | 279 |
forClass:self class class |
280 |
selector:#'doubleArraySize' |
|
281 |
inCategory:'tests' |
|
282 |
notifying:nil |
|
283 |
install:true |
|
284 |
skipIfSame:false |
|
285 |
silent:true. |
|
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
286 |
|
1447 | 287 |
sizes := self class perform: #doubleArraySize. |
288 |
self assert:(sizes first == 8). |
|
289 |
self assert:(sizes second == 8). |
|
290 |
self class class removeSelector:#doubleArraySize. |
|
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
291 |
]. |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
292 |
] ensure:[ |
1447 | 293 |
self class class removeSelector:#doubleArraySize. |
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
294 |
] |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
295 |
|
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
296 |
" |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
297 |
self run:#test02_compilation |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
298 |
self new test02_compilation |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
299 |
" |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
300 |
|
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
301 |
"Created: / 11-02-2014 / 23:50:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
302 |
"Modified (format): / 04-03-2014 / 10:13:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1048
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
303 |
! |
b5f4b15a3dbf
Added RegressionTests::STCCompilerTest>>#test04_doubleArraySize_bug
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1047
diff
changeset
|
304 |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
305 |
test10_bitor_bug |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
306 |
"checks for an stc compiler bug (detected Sep 2011). |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
307 |
stc generates bad code for the bitOr expression in nextLittleEndianNumber" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
308 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
309 |
|val mthd| |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
310 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
311 |
Class withoutUpdatingChangesDo:[ |
1447 | 312 |
self class recompile:#'nextLittleEndianNumber:from:'. |
1485 | 313 |
|
1447 | 314 |
val := self nextLittleEndianNumber:4 from:#[1 2 3 4]. |
315 |
self assert:(val = 16r04030201). |
|
316 |
val := self nextLittleEndianNumber:8 from:#[1 2 3 4 5 6 7 8]. |
|
317 |
self assert:(val = 16r0807060504030201). |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
318 |
|
1447 | 319 |
mthd := self class compiledMethodAt:#'nextLittleEndianNumber:from:'. |
320 |
(STCCompilerInterface new) |
|
321 |
compileToMachineCode:mthd source |
|
322 |
forClass:self class |
|
323 |
selector:#'nextLittleEndianNumber:from:' |
|
324 |
inCategory:mthd category |
|
325 |
notifying:nil |
|
326 |
install:true |
|
327 |
skipIfSame:false |
|
328 |
silent:true. |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
329 |
|
1447 | 330 |
self |
331 |
assert:mthd ~= (self class compiledMethodAt:#'nextLittleEndianNumber:from:') |
|
332 |
description:'Could not compile with STC'. |
|
894
fd92a3529be3
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
809
diff
changeset
|
333 |
|
1447 | 334 |
val := self nextLittleEndianNumber:4 from:#[1 2 3 4]. |
335 |
self assert:(val = 16r04030201). |
|
336 |
val := self nextLittleEndianNumber:8 from:#[1 2 3 4 5 6 7 8]. |
|
337 |
self assert:(val = 16r0807060504030201). |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
338 |
]. |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
339 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
340 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
341 |
self run:#test10_bitor_bug |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
342 |
self new test10_bitor_bug |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
343 |
" |
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
344 |
|
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
345 |
"Created: / 17-09-2011 / 10:32:18 / cg" |
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
346 |
! |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
347 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
348 |
test20_localsOfInlinedBlock_bug |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
349 |
"checks for an stc compiler bug (detected Sep 2011). |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
350 |
stc generates bad code for the bitOr expression in nextLittleEndianNumber" |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
351 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
352 |
|blk mthd| |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
353 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
354 |
Class withoutUpdatingChangesDo:[ |
1447 | 355 |
self class recompile:#'inlinedBlockVariables1'. |
356 |
blk := self inlinedBlockVariables1. |
|
357 |
self assert:((blk value:#argbbb_1) == #localb_1). |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
358 |
|
1447 | 359 |
mthd := self class compiledMethodAt:#'inlinedBlockVariables1'. |
360 |
(STCCompilerInterface new) |
|
361 |
compileToMachineCode:mthd source |
|
362 |
forClass:self class |
|
363 |
selector:#'inlinedBlockVariables1' |
|
364 |
inCategory:mthd category |
|
365 |
notifying:nil |
|
366 |
install:true |
|
367 |
skipIfSame:false |
|
368 |
silent:true. |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
369 |
|
1447 | 370 |
self |
371 |
assert:mthd ~= (self class compiledMethodAt:#'inlinedBlockVariables1') |
|
372 |
description:'Could not compile with STC'. |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
373 |
|
1447 | 374 |
blk := self inlinedBlockVariables1. |
375 |
self assert:((blk value:#argbbb_1) == #localb_1). |
|
1046
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
376 |
]. |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
377 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
378 |
" |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
379 |
self run:#test20_localsOfInlinedBlock_bug |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
380 |
self new test20_localsOfInlinedBlock_bug |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
381 |
" |
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
382 |
|
06719286467f
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
995
diff
changeset
|
383 |
"Created: / 17-09-2011 / 10:32:18 / cg" |
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
384 |
! |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
385 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
386 |
test21_localsOfInlinedBlock_bug |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
387 |
"checks for an stc compiler bug (detected Sep 2011). |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
388 |
stc generates bad code for the bitOr expression in nextLittleEndianNumber" |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
389 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
390 |
|blk mthd| |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
391 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
392 |
Class withoutUpdatingChangesDo:[ |
1447 | 393 |
self class recompile:#'inlinedBlockVariables2'. |
394 |
blk := self inlinedBlockVariables2. |
|
395 |
self assert:((blk value:#argbbb_1) == 3). |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
396 |
|
1447 | 397 |
mthd := self class compiledMethodAt:#'inlinedBlockVariables2'. |
398 |
(STCCompilerInterface new) |
|
399 |
compileToMachineCode:mthd source |
|
400 |
forClass:self class |
|
401 |
selector:#'inlinedBlockVariables2' |
|
402 |
inCategory:mthd category |
|
403 |
notifying:nil |
|
404 |
install:true |
|
405 |
skipIfSame:false |
|
406 |
silent:true. |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
407 |
|
1447 | 408 |
self |
409 |
assert:mthd ~= (self class compiledMethodAt:#'inlinedBlockVariables2') |
|
410 |
description:'Could not compile with STC'. |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
411 |
|
1447 | 412 |
blk := self inlinedBlockVariables2. |
413 |
self assert:((blk value:#argbbb_1) == 3). |
|
1047
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
414 |
]. |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
415 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
416 |
" |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
417 |
self run:#test21_localsOfInlinedBlock_bug |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
418 |
self new test21_localsOfInlinedBlock_bug |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
419 |
" |
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
420 |
|
c602a3472c37
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
1046
diff
changeset
|
421 |
"Created: / 17-09-2011 / 10:32:18 / cg" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
422 |
! |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
423 |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
424 |
test_LongIntegerArray_01 |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
425 |
|sizes| |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
426 |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
427 |
[ |
1447 | 428 |
Class |
429 |
withoutUpdatingChangesDo:[ |
|
430 |
"/ Now, compile the same source using stc and check... |
|
431 |
(STCCompilerInterface new) |
|
432 |
compileToMachineCode:'longIntegerArray_size |
|
433 |
| arr size1 size2 | |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
434 |
|
1447 | 435 |
arr := LongIntegerArray new: 8. |
436 |
size1 := arr size. |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
437 |
%{ |
1447 | 438 |
size2 = __MKINT(__longIntegerArraySize(arr)); |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
439 |
%}. |
1447 | 440 |
^ Array with: size1 with: size2. |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
441 |
' |
1447 | 442 |
forClass:self class class |
443 |
selector:#'longIntegerArray_size' |
|
444 |
inCategory:'tests' |
|
445 |
notifying:nil |
|
446 |
install:true |
|
447 |
skipIfSame:false |
|
448 |
silent:true. |
|
449 |
sizes := self class perform:#'longIntegerArray_size'. |
|
450 |
self assert:(sizes first == 8). |
|
451 |
self assert:(sizes second == 8). |
|
452 |
self class class removeSelector:#'longIntegerArray_size'. |
|
453 |
]. |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
454 |
] ensure:[ self class class removeSelector:#'longIntegerArray_size'. ] |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
455 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
456 |
" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
457 |
self run:#test02_compilation |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
458 |
self new test02_compilation" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
459 |
"Created: / 04-03-2014 / 10:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
460 |
! |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
461 |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
462 |
test_LongIntegerArray_02 |
1344 | 463 |
|sizes verbose| |
464 |
||
465 |
verbose := false. |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
466 |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
467 |
[ |
1447 | 468 |
Class |
469 |
withoutUpdatingChangesDo:[ |
|
470 |
(STCCompilerInterface new) |
|
471 |
compileToMachineCode:'longIntegerArray_i_element |
|
472 |
| arr v1 v8 | |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
473 |
|
1447 | 474 |
arr := LongIntegerArray new: 8. |
475 |
arr at: 1 put: 11123456789. |
|
476 |
arr at: 8 put: 11123456789. |
|
477 |
self assert: (arr at: 1) = 11123456789. |
|
478 |
self assert: (arr at: 8) = 11123456789. |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
479 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
480 |
%{ |
1447 | 481 |
__uint64__ val; |
482 |
console_printf("arr: arr = 0x%x\n", (INT)arr); |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
483 |
#if defined(__x86_64__) |
1447 | 484 |
val = 0x0001000100010001; |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
485 |
#else |
1447 | 486 |
val.lo = 1; val.hi = 1; |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
487 |
#endif |
1447 | 488 |
val = __LongIntegerArrayInstPtr(arr)->i_element[0]; |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
489 |
// console_printf("v1: val.lo = %d, val.hi = %d\n", val.lo, val.hi); |
1447 | 490 |
v1 = __MKUINT64(&val); |
491 |
val = __LongIntegerArrayInstPtr(arr)->i_element[7]; |
|
492 |
// console_printf("v2: val.lo = %d, val.hi = %d\n", val.lo, val.hi); |
|
493 |
v8 = __MKUINT64(&val); |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
494 |
%}. |
1447 | 495 |
v1 errorPrintCR. |
496 |
v8 errorPrintCR. |
|
497 |
^ Array with: v1 with: v8. |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
498 |
' |
1447 | 499 |
forClass:self class class |
500 |
selector:#'longIntegerArray_i_element' |
|
501 |
inCategory:'tests' |
|
502 |
notifying:nil |
|
503 |
install:true |
|
504 |
skipIfSame:false |
|
505 |
silent:true. |
|
506 |
1 to:100 do:[:i | |
|
507 |
verbose ifTrue:[ |
|
1485 | 508 |
('Pass ' , i printString) errorPrintCR. |
1447 | 509 |
]. |
510 |
sizes := self class perform:#'longIntegerArray_i_element'. |
|
511 |
self assert:(sizes first = 11123456789) description:('failed in pass ',i printString). |
|
512 |
self assert:(sizes second = 11123456789) description:('failed in pass ',i printString). |
|
513 |
]. |
|
514 |
self class class removeSelector:#'longIntegerArray_i_element'. |
|
515 |
]. |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
516 |
] ensure:[ self class class removeSelector:#'longIntegerArray_i_element'. ] |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
517 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
518 |
" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
519 |
self run:#test02_compilation |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
520 |
self new test02_compilation" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
521 |
"Created: / 04-03-2014 / 10:21:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1152
c9762558857f
class: RegressionTests::STCCompilerTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1151
diff
changeset
|
522 |
"Modified: / 26-06-2014 / 10:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
523 |
! |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
524 |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
525 |
test_SignedLongIntegerArray_01 |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
526 |
|sizes| |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
527 |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
528 |
[ |
1447 | 529 |
Class |
530 |
withoutUpdatingChangesDo:[ |
|
531 |
"/ Now, compile the same source using stc and check... |
|
532 |
(STCCompilerInterface new) |
|
533 |
compileToMachineCode:'signedLongIntegerArray_size |
|
534 |
| arr size1 size2 | |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
535 |
|
1447 | 536 |
arr := SignedLongIntegerArray new: 8. |
537 |
size1 := arr size. |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
538 |
%{ |
1447 | 539 |
size2 = __MKINT(__signedLongIntegerArraySize(arr)); |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
540 |
%}. |
1447 | 541 |
^ Array with: size1 with: size2. |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
542 |
' |
1447 | 543 |
forClass:self class class |
544 |
selector:#'signedLongIntegerArray_size' |
|
545 |
inCategory:'tests' |
|
546 |
notifying:nil |
|
547 |
install:true |
|
548 |
skipIfSame:false |
|
549 |
silent:true. |
|
550 |
sizes := self class perform:#'signedLongIntegerArray_size'. |
|
551 |
self assert:(sizes first == 8). |
|
552 |
self assert:(sizes second == 8). |
|
553 |
self class class removeSelector:#'signedLongIntegerArray_size'. |
|
554 |
]. |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
555 |
] ensure:[ self class class removeSelector:#'signedLongIntegerArray_size'. ] |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
556 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
557 |
" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
558 |
self run:#test02_compilation |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
559 |
self new test02_compilation" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
560 |
"Created: / 04-03-2014 / 10:11:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
561 |
! |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
562 |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
563 |
test_SignedLongIntegerArray_02 |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
564 |
|sizes| |
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
565 |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
566 |
[ |
1447 | 567 |
Class |
568 |
withoutUpdatingChangesDo:[ |
|
569 |
(STCCompilerInterface new) |
|
570 |
compileToMachineCode:'signedLongIntegerArray_i_element |
|
571 |
| arr v1 v8 | |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
572 |
|
1447 | 573 |
arr := SignedLongIntegerArray new: 8. |
574 |
arr at: 1 put: 1123456789. |
|
575 |
arr at: 8 put: 1123456789. |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
576 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
577 |
%{ |
1447 | 578 |
__int64__ val; |
579 |
val = __SignedLongIntegerArrayInstPtr(arr)->i_element[0]; |
|
580 |
v1 = __MKINT64(&val); |
|
581 |
val = __SignedLongIntegerArrayInstPtr(arr)->i_element[7]; |
|
582 |
v8 = __MKINT64(&val); |
|
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
583 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
584 |
%}. |
1447 | 585 |
^ Array with: v1 with: v8. |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
586 |
' |
1447 | 587 |
forClass:self class class |
588 |
selector:#'signedLongIntegerArray_i_element' |
|
589 |
inCategory:'tests' |
|
590 |
notifying:nil |
|
591 |
install:true |
|
592 |
skipIfSame:false |
|
593 |
silent:true. |
|
594 |
sizes := self class perform:#'signedLongIntegerArray_i_element'. |
|
595 |
self assert:(sizes first = 1123456789). |
|
596 |
self assert:(sizes second = 1123456789). |
|
597 |
self class class removeSelector:#'signedLongIntegerArray_i_element'. |
|
598 |
]. |
|
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
599 |
] ensure:[ self class class removeSelector:#'signedLongIntegerArray_i_element'. ] |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
600 |
|
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
601 |
" |
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
602 |
self run:#test02_compilation |
1290
9575752f8c52
class: RegressionTests::STCCompilerTests
Stefan Vogel <sv@exept.de>
parents:
1166
diff
changeset
|
603 |
self new test02_compilation" |
1102
0b428b9f023f
Added some tests for (Signed)LongIntegerArray.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1048
diff
changeset
|
604 |
"Created: / 04-03-2014 / 10:13:00 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
638 | 605 |
! ! |
606 |
||
607 |
!STCCompilerTests class methodsFor:'documentation'! |
|
608 |
||
609 |
version |
|
610 |
^ '$Header$' |
|
611 |
! |
|
612 |
||
613 |
version_CVS |
|
614 |
^ '$Header$' |
|
615 |
! ! |
|
809
63b232026107
class: RegressionTests::STCCompilerTests
Claus Gittinger <cg@exept.de>
parents:
667
diff
changeset
|
616 |