40 test_eqNumberBug |
40 test_eqNumberBug |
41 "reported 09-09-2004; |
41 "reported 09-09-2004; |
42 stc generated wrong code for some inlined = - compare (shame)." |
42 stc generated wrong code for some inlined = - compare (shame)." |
43 |
43 |
44 Class withoutUpdatingChangesDo:[ |
44 Class withoutUpdatingChangesDo:[ |
45 self class |
45 self class |
46 compile: |
46 compile: |
47 'testEQ |
47 'testEQ |
48 a = b ifTrue:[^ false]. |
48 a = b ifTrue:[^ false]. |
49 ^ true. |
49 ^ true. |
50 ' |
50 ' |
51 classified:'temporary'. |
51 classified:'temporary'. |
52 ]. |
52 ]. |
53 |
53 |
54 self assert: ( |
54 self assert: ( |
55 (self |
55 (self |
56 a:0; |
56 a:0; |
57 b:0) testEQ ) == false. |
57 b:0) testEQ ) == false. |
58 |
58 |
59 self assert: ( |
59 self assert: ( |
60 (self |
60 (self |
61 a:0; |
61 a:0; |
62 b:0.0) testEQ ) == false. |
62 b:0.0) testEQ ) == false. |
63 |
63 |
64 self assert: ( |
64 self assert: ( |
65 (self |
65 (self |
66 a:0.0; |
66 a:0.0; |
67 b:0) testEQ ) == false. |
67 b:0) testEQ ) == false. |
68 |
68 |
69 self assert: ( |
69 self assert: ( |
70 (self |
70 (self |
71 a:0.0; |
71 a:0.0; |
72 b:0.0) testEQ ) == false. |
72 b:0.0) testEQ ) == false. |
73 |
73 |
74 Class withoutUpdatingChangesDo:[ |
74 Class withoutUpdatingChangesDo:[ |
75 Compiler |
75 Compiler stcCompileMethod:(self class compiledMethodAt:#testEQ). |
76 stcCompileMethod:(self class compiledMethodAt:#testEQ). |
|
77 ]. |
76 ]. |
78 |
77 |
79 self assert: ( |
78 self assert: ( |
80 (self |
79 (self |
81 a:0; |
80 a:0; |
82 b:0) testEQ ) == false. |
81 b:0) testEQ ) == false. |
83 |
82 |
84 self assert: ( |
83 self assert: ( |
85 (self |
84 (self |
86 a:0; |
85 a:0; |
87 b:0.0) testEQ ) == false. |
86 b:0.0) testEQ ) == false. |
88 |
87 |
89 self assert: ( |
88 self assert: ( |
90 (self |
89 (self |
91 a:0.0; |
90 a:0.0; |
92 b:0) testEQ ) == false. |
91 b:0) testEQ ) == false. |
93 |
92 |
94 self assert: ( |
93 self assert: ( |
95 (self |
94 (self |
96 a:0.0; |
95 a:0.0; |
97 b:0.0) testEQ ) == false. |
96 b:0.0) testEQ ) == false. |
98 |
97 |
99 Class withoutUpdatingChangesDo:[ |
98 Class withoutUpdatingChangesDo:[ |
100 self class removeSelector:#testEQ |
99 self class removeSelector:#testEQ |
101 ]. |
100 ]. |
102 |
101 |
103 " |
102 " |
104 self new test_eqNumberBug |
103 self new test_eqNumberBug |
105 " |
104 " |
156 |
155 |
157 self assert: ('22.2' asNumber = 22.2). |
156 self assert: ('22.2' asNumber = 22.2). |
158 self assert: ('-22.2' asNumber = -22.2). |
157 self assert: ('-22.2' asNumber = -22.2). |
159 |
158 |
160 Smalltalk isSmalltalkX ifTrue:[ |
159 Smalltalk isSmalltalkX ifTrue:[ |
161 "/ st/x requires this: |
160 "/ st/x requires this: |
162 |
161 |
163 self assert: ((Number readSmalltalkSyntaxFrom:'10r22.2') = 22.2). |
162 self assert: ((Number readSmalltalkSyntaxFrom:'10r22.2') = 22.2). |
164 self assert: ((Number readSmalltalkSyntaxFrom:'10r22.2s5') = 22.2). |
163 self assert: ((Number readSmalltalkSyntaxFrom:'10r22.2s5') = 22.2). |
165 |
164 |
166 self assert: ((Number readSmalltalkSyntaxFrom:'10r-22.2') = -22.2). |
165 self assert: ((Number readSmalltalkSyntaxFrom:'10r-22.2') = -22.2). |
167 self assert: ((Number readSmalltalkSyntaxFrom:'10r-22.2s5') = -22.2). |
166 self assert: ((Number readSmalltalkSyntaxFrom:'10r-22.2s5') = -22.2). |
168 |
167 |
169 self assert: 2r1e26 = (Number readSmalltalkSyntaxFrom: '2r1e26'). |
168 self assert: 2r1e26 = (Number readSmalltalkSyntaxFrom: '2r1e26'). |
170 ] ifFalse:[ |
169 ] ifFalse:[ |
171 "/ squeak allows this: |
170 "/ squeak allows this: |
172 self assert: 2r1e26 = (Number readFrom: '2r1e26'). |
171 self assert: 2r1e26 = (Number readFrom: '2r1e26'). |
173 |
172 |
174 self assert: ('10r22.2' asNumber = 22.2). |
173 self assert: ('10r22.2' asNumber = 22.2). |
175 self assert: ('10r22.2s5' asNumber = 22.2). |
174 self assert: ('10r22.2s5' asNumber = 22.2). |
176 |
175 |
177 self assert: ('10r-22.2' asNumber = -22.2). |
176 self assert: ('10r-22.2' asNumber = -22.2). |
178 self assert: ('10r-22.2s5' asNumber = -22.2). |
177 self assert: ('10r-22.2s5' asNumber = -22.2). |
179 ]. |
178 ]. |
180 ! ! |
179 ! ! |
181 |
180 |
182 !NumberTest class methodsFor:'documentation'! |
181 !NumberTest class methodsFor:'documentation'! |
183 |
182 |