|
1 function test_lsh(x, y) { |
|
2 return x << y; |
|
3 } |
|
4 |
|
5 function test_ursh(x, y) { |
|
6 return x >>> y; |
|
7 } |
|
8 |
|
9 function test_rsh(x, y) { |
|
10 return x >> y; |
|
11 } |
|
12 |
|
13 var x = 1; |
|
14 assertEq(test_rsh(x, -1), 0); |
|
15 assertEq(test_rsh(-1, x), -1); |
|
16 assertEq(test_ursh(x, -1), 0); |
|
17 assertEq(test_ursh(-1, x), 2147483647); |
|
18 assertEq(test_lsh(x, -1), -2147483648); |
|
19 assertEq(test_lsh(-1, x), -2); |
|
20 assertEq(test_rsh(x, 1), 0); |
|
21 assertEq(test_rsh(1, x), 0); |
|
22 assertEq(test_ursh(x, 1), 0); |
|
23 assertEq(test_ursh(1, x), 0); |
|
24 assertEq(test_lsh(x, 1), 2); |
|
25 assertEq(test_lsh(1, x), 2); |
|
26 assertEq(test_rsh(x, 0), 1); |
|
27 assertEq(test_rsh(0, x), 0); |
|
28 assertEq(test_ursh(x, 0), 1); |
|
29 assertEq(test_ursh(0, x), 0); |
|
30 assertEq(test_lsh(x, 0), 1); |
|
31 assertEq(test_lsh(0, x), 0); |
|
32 assertEq(test_rsh(x, 0xffffffff), 0); |
|
33 assertEq(test_rsh(0xffffffff, x), -1); |
|
34 assertEq(test_ursh(x, 0xffffffff), 0); |
|
35 assertEq(test_ursh(0xffffffff, x), 2147483647); |
|
36 assertEq(test_lsh(x, 0xffffffff), -2147483648); |
|
37 assertEq(test_lsh(0xffffffff, x), -2); |
|
38 assertEq(test_rsh(x, "10.6"), 0); |
|
39 assertEq(test_rsh("10.6", x), 5); |
|
40 assertEq(test_ursh(x, "10.6"), 0); |
|
41 assertEq(test_ursh("10.6", x), 5); |
|
42 assertEq(test_lsh(x, "10.6"), 1024); |
|
43 assertEq(test_lsh("10.6", x), 20); |
|
44 assertEq(test_rsh(x, 2147483648), 1); |
|
45 assertEq(test_rsh(2147483648, x), -1073741824); |
|
46 assertEq(test_ursh(x, 2147483648), 1); |
|
47 assertEq(test_ursh(2147483648, x), 1073741824); |
|
48 assertEq(test_lsh(x, 2147483648), 1); |
|
49 assertEq(test_lsh(2147483648, x), 0); |
|
50 assertEq(test_rsh(x, 4294967296), 1); |
|
51 assertEq(test_rsh(4294967296, x), 0); |
|
52 assertEq(test_ursh(x, 4294967296), 1); |
|
53 assertEq(test_ursh(4294967296, x), 0); |
|
54 assertEq(test_lsh(x, 4294967296), 1); |
|
55 assertEq(test_lsh(4294967296, x), 0); |
|
56 assertEq(test_rsh(x, undefined), 1); |
|
57 assertEq(test_rsh(undefined, x), 0); |
|
58 assertEq(test_ursh(x, undefined), 1); |
|
59 assertEq(test_ursh(undefined, x), 0); |
|
60 assertEq(test_lsh(x, undefined), 1); |
|
61 assertEq(test_lsh(undefined, x), 0); |
|
62 assertEq(test_rsh(x, null), 1); |
|
63 assertEq(test_rsh(null, x), 0); |
|
64 assertEq(test_ursh(x, null), 1); |
|
65 assertEq(test_ursh(null, x), 0); |
|
66 assertEq(test_lsh(x, null), 1); |
|
67 assertEq(test_lsh(null, x), 0); |
|
68 assertEq(test_rsh(x, false), 1); |
|
69 assertEq(test_rsh(false, x), 0); |
|
70 assertEq(test_ursh(x, false), 1); |
|
71 assertEq(test_ursh(false, x), 0); |
|
72 assertEq(test_lsh(x, false), 1); |
|
73 assertEq(test_lsh(false, x), 0); |
|
74 assertEq(test_rsh(x, true), 0); |
|
75 assertEq(test_rsh(true, x), 0); |
|
76 assertEq(test_ursh(x, true), 0); |
|
77 assertEq(test_ursh(true, x), 0); |
|
78 assertEq(test_lsh(x, true), 2); |
|
79 assertEq(test_lsh(true, x), 2); |
|
80 assertEq(test_rsh(x, -1.5), 0); |
|
81 assertEq(test_rsh(-1.5, x), -1); |
|
82 assertEq(test_ursh(x, -1.5), 0); |
|
83 assertEq(test_ursh(-1.5, x), 2147483647); |
|
84 assertEq(test_lsh(x, -1.5), -2147483648); |
|
85 assertEq(test_lsh(-1.5, x), -2); |
|
86 |
|
87 var x = 0; |
|
88 assertEq(test_rsh(x, -1), 0); |
|
89 assertEq(test_rsh(-1, x), -1); |
|
90 assertEq(test_ursh(x, -1), 0); |
|
91 assertEq(test_ursh(-1, x), 4294967295); |
|
92 assertEq(test_lsh(x, -1), 0); |
|
93 assertEq(test_lsh(-1, x), -1); |
|
94 assertEq(test_rsh(x, 1), 0); |
|
95 assertEq(test_rsh(1, x), 1); |
|
96 assertEq(test_ursh(x, 1), 0); |
|
97 assertEq(test_ursh(1, x), 1); |
|
98 assertEq(test_lsh(x, 1), 0); |
|
99 assertEq(test_lsh(1, x), 1); |
|
100 assertEq(test_rsh(x, 0), 0); |
|
101 assertEq(test_rsh(0, x), 0); |
|
102 assertEq(test_ursh(x, 0), 0); |
|
103 assertEq(test_ursh(0, x), 0); |
|
104 assertEq(test_lsh(x, 0), 0); |
|
105 assertEq(test_lsh(0, x), 0); |
|
106 assertEq(test_rsh(x, 0xffffffff), 0); |
|
107 assertEq(test_rsh(0xffffffff, x), -1); |
|
108 assertEq(test_ursh(x, 0xffffffff), 0); |
|
109 assertEq(test_ursh(0xffffffff, x), 4294967295); |
|
110 assertEq(test_lsh(x, 0xffffffff), 0); |
|
111 assertEq(test_lsh(0xffffffff, x), -1); |
|
112 assertEq(test_rsh(x, "10.6"), 0); |
|
113 assertEq(test_rsh("10.6", x), 10); |
|
114 assertEq(test_ursh(x, "10.6"), 0); |
|
115 assertEq(test_ursh("10.6", x), 10); |
|
116 assertEq(test_lsh(x, "10.6"), 0); |
|
117 assertEq(test_lsh("10.6", x), 10); |
|
118 assertEq(test_rsh(x, 2147483648), 0); |
|
119 assertEq(test_rsh(2147483648, x), -2147483648); |
|
120 assertEq(test_ursh(x, 2147483648), 0); |
|
121 assertEq(test_ursh(2147483648, x), 2147483648); |
|
122 assertEq(test_lsh(x, 2147483648), 0); |
|
123 assertEq(test_lsh(2147483648, x), -2147483648); |
|
124 assertEq(test_rsh(x, 4294967296), 0); |
|
125 assertEq(test_rsh(4294967296, x), 0); |
|
126 assertEq(test_ursh(x, 4294967296), 0); |
|
127 assertEq(test_ursh(4294967296, x), 0); |
|
128 assertEq(test_lsh(x, 4294967296), 0); |
|
129 assertEq(test_lsh(4294967296, x), 0); |
|
130 assertEq(test_rsh(x, undefined), 0); |
|
131 assertEq(test_rsh(undefined, x), 0); |
|
132 assertEq(test_ursh(x, undefined), 0); |
|
133 assertEq(test_ursh(undefined, x), 0); |
|
134 assertEq(test_lsh(x, undefined), 0); |
|
135 assertEq(test_lsh(undefined, x), 0); |
|
136 assertEq(test_rsh(x, null), 0); |
|
137 assertEq(test_rsh(null, x), 0); |
|
138 assertEq(test_ursh(x, null), 0); |
|
139 assertEq(test_ursh(null, x), 0); |
|
140 assertEq(test_lsh(x, null), 0); |
|
141 assertEq(test_lsh(null, x), 0); |
|
142 assertEq(test_rsh(x, false), 0); |
|
143 assertEq(test_rsh(false, x), 0); |
|
144 assertEq(test_ursh(x, false), 0); |
|
145 assertEq(test_ursh(false, x), 0); |
|
146 assertEq(test_lsh(x, false), 0); |
|
147 assertEq(test_lsh(false, x), 0); |
|
148 assertEq(test_rsh(x, true), 0); |
|
149 assertEq(test_rsh(true, x), 1); |
|
150 assertEq(test_ursh(x, true), 0); |
|
151 assertEq(test_ursh(true, x), 1); |
|
152 assertEq(test_lsh(x, true), 0); |
|
153 assertEq(test_lsh(true, x), 1); |
|
154 assertEq(test_rsh(x, -1.5), 0); |
|
155 assertEq(test_rsh(-1.5, x), -1); |
|
156 assertEq(test_ursh(x, -1.5), 0); |
|
157 assertEq(test_ursh(-1.5, x), 4294967295); |
|
158 assertEq(test_lsh(x, -1.5), 0); |
|
159 assertEq(test_lsh(-1.5, x), -1); |
|
160 |
|
161 var x = -1; |
|
162 assertEq(test_rsh(x, -1), -1); |
|
163 assertEq(test_rsh(-1, x), -1); |
|
164 assertEq(test_ursh(x, -1), 1); |
|
165 assertEq(test_ursh(-1, x), 1); |
|
166 assertEq(test_lsh(x, -1), -2147483648); |
|
167 assertEq(test_lsh(-1, x), -2147483648); |
|
168 assertEq(test_rsh(x, 1), -1); |
|
169 assertEq(test_rsh(1, x), 0); |
|
170 assertEq(test_ursh(x, 1), 2147483647); |
|
171 assertEq(test_ursh(1, x), 0); |
|
172 assertEq(test_lsh(x, 1), -2); |
|
173 assertEq(test_lsh(1, x), -2147483648); |
|
174 assertEq(test_rsh(x, 0), -1); |
|
175 assertEq(test_rsh(0, x), 0); |
|
176 assertEq(test_ursh(x, 0), 4294967295); |
|
177 assertEq(test_ursh(0, x), 0); |
|
178 assertEq(test_lsh(x, 0), -1); |
|
179 assertEq(test_lsh(0, x), 0); |
|
180 assertEq(test_rsh(x, 0xffffffff), -1); |
|
181 assertEq(test_rsh(0xffffffff, x), -1); |
|
182 assertEq(test_ursh(x, 0xffffffff), 1); |
|
183 assertEq(test_ursh(0xffffffff, x), 1); |
|
184 assertEq(test_lsh(x, 0xffffffff), -2147483648); |
|
185 assertEq(test_lsh(0xffffffff, x), -2147483648); |
|
186 assertEq(test_rsh(x, "10.6"), -1); |
|
187 assertEq(test_rsh("10.6", x), 0); |
|
188 assertEq(test_ursh(x, "10.6"), 4194303); |
|
189 assertEq(test_ursh("10.6", x), 0); |
|
190 assertEq(test_lsh(x, "10.6"), -1024); |
|
191 assertEq(test_lsh("10.6", x), 0); |
|
192 assertEq(test_rsh(x, 2147483648), -1); |
|
193 assertEq(test_rsh(2147483648, x), -1); |
|
194 assertEq(test_ursh(x, 2147483648), 4294967295); |
|
195 assertEq(test_ursh(2147483648, x), 1); |
|
196 assertEq(test_lsh(x, 2147483648), -1); |
|
197 assertEq(test_lsh(2147483648, x), 0); |
|
198 assertEq(test_rsh(x, 4294967296), -1); |
|
199 assertEq(test_rsh(4294967296, x), 0); |
|
200 assertEq(test_ursh(x, 4294967296), 4294967295); |
|
201 assertEq(test_ursh(4294967296, x), 0); |
|
202 assertEq(test_lsh(x, 4294967296), -1); |
|
203 assertEq(test_lsh(4294967296, x), 0); |
|
204 assertEq(test_rsh(x, undefined), -1); |
|
205 assertEq(test_rsh(undefined, x), 0); |
|
206 assertEq(test_ursh(x, undefined), 4294967295); |
|
207 assertEq(test_ursh(undefined, x), 0); |
|
208 assertEq(test_lsh(x, undefined), -1); |
|
209 assertEq(test_lsh(undefined, x), 0); |
|
210 assertEq(test_rsh(x, null), -1); |
|
211 assertEq(test_rsh(null, x), 0); |
|
212 assertEq(test_ursh(x, null), 4294967295); |
|
213 assertEq(test_ursh(null, x), 0); |
|
214 assertEq(test_lsh(x, null), -1); |
|
215 assertEq(test_lsh(null, x), 0); |
|
216 assertEq(test_rsh(x, false), -1); |
|
217 assertEq(test_rsh(false, x), 0); |
|
218 assertEq(test_ursh(x, false), 4294967295); |
|
219 assertEq(test_ursh(false, x), 0); |
|
220 assertEq(test_lsh(x, false), -1); |
|
221 assertEq(test_lsh(false, x), 0); |
|
222 assertEq(test_rsh(x, true), -1); |
|
223 assertEq(test_rsh(true, x), 0); |
|
224 assertEq(test_ursh(x, true), 2147483647); |
|
225 assertEq(test_ursh(true, x), 0); |
|
226 assertEq(test_lsh(x, true), -2); |
|
227 assertEq(test_lsh(true, x), -2147483648); |
|
228 assertEq(test_rsh(x, -1.5), -1); |
|
229 assertEq(test_rsh(-1.5, x), -1); |
|
230 assertEq(test_ursh(x, -1.5), 1); |
|
231 assertEq(test_ursh(-1.5, x), 1); |
|
232 assertEq(test_lsh(x, -1.5), -2147483648); |
|
233 assertEq(test_lsh(-1.5, x), -2147483648); |
|
234 |
|
235 |
|
236 |
|
237 assertEq(test_ursh(0, -2147483648), 0); |
|
238 assertEq(test_ursh(0, 2147483648), 0); |
|
239 assertEq(test_ursh(0, 45), 0); |
|
240 assertEq(test_ursh(0, -45), 0); |
|
241 assertEq(test_ursh(100, -2147483648), 100); |
|
242 assertEq(test_ursh(100, 2147483648), 100); |
|
243 assertEq(test_ursh(100, 45), 0); |
|
244 assertEq(test_ursh(100, -45), 0); |
|
245 assertEq(test_ursh(-100, -2147483648), 4294967196); |
|
246 assertEq(test_ursh(-100, 2147483648), 4294967196); |
|
247 assertEq(test_ursh(-100, 45), 524287); |
|
248 assertEq(test_ursh(-100, -45), 8191); |
|
249 |
|
250 |
|
251 |
|
252 function test1() { |
|
253 var i = 0; |
|
254 return 2147483647 >>> i; |
|
255 } |
|
256 assertEq(test1(), 2147483647); |
|
257 function test2() { |
|
258 var i = 1; |
|
259 return 2147483647 >>> i; |
|
260 } |
|
261 assertEq(test2(), 1073741823); |
|
262 function test3() { |
|
263 var i = 0; |
|
264 return -1 >>> i; |
|
265 } |
|
266 assertEq(test3(), 4294967295); |
|
267 function test4() { |
|
268 var i = 3; |
|
269 return -1 >>> i; |
|
270 } |
|
271 assertEq(test4(), 536870911); |
|
272 function test5() { |
|
273 var i = 0; |
|
274 return -3648 >>> i; |
|
275 } |
|
276 assertEq(test5(), 4294963648); |