js/src/jit-test/tests/basic/testBitopWithConstan.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 function test1 (x) {
michael@0 2 assertEq(x | -1, -1);
michael@0 3 assertEq(-1 | x, -1);
michael@0 4 assertEq(x & -1, 1);
michael@0 5 assertEq(-1 & x, 1);
michael@0 6 assertEq(x ^ -1, -2);
michael@0 7 assertEq(-1 ^ x, -2);
michael@0 8 assertEq(x >> -1, 0);
michael@0 9 assertEq(-1 >> x, -1);
michael@0 10 assertEq(x >>> -1, 0);
michael@0 11 assertEq(-1 >>> x, 2147483647);
michael@0 12 assertEq(x << -1, -2147483648);
michael@0 13 assertEq(-1 << x, -2);
michael@0 14 assertEq(x | 1, 1);
michael@0 15 assertEq(1 | x, 1);
michael@0 16 assertEq(x & 1, 1);
michael@0 17 assertEq(1 & x, 1);
michael@0 18 assertEq(x ^ 1, 0);
michael@0 19 assertEq(1 ^ x, 0);
michael@0 20 assertEq(x >> 1, 0);
michael@0 21 assertEq(1 >> x, 0);
michael@0 22 assertEq(x >>> 1, 0);
michael@0 23 assertEq(1 >>> x, 0);
michael@0 24 assertEq(x << 1, 2);
michael@0 25 assertEq(1 << x, 2);
michael@0 26 assertEq(x | 0, 1);
michael@0 27 assertEq(0 | x, 1);
michael@0 28 assertEq(x & 0, 0);
michael@0 29 assertEq(0 & x, 0);
michael@0 30 assertEq(x ^ 0, 1);
michael@0 31 assertEq(0 ^ x, 1);
michael@0 32 assertEq(x >> 0, 1);
michael@0 33 assertEq(0 >> x, 0);
michael@0 34 assertEq(x >>> 0, 1);
michael@0 35 assertEq(0 >>> x, 0);
michael@0 36 assertEq(x << 0, 1);
michael@0 37 assertEq(0 << x, 0);
michael@0 38 assertEq(x | 0xffffffff, -1);
michael@0 39 assertEq(0xffffffff | x, -1);
michael@0 40 assertEq(x & 0xffffffff, 1);
michael@0 41 assertEq(0xffffffff & x, 1);
michael@0 42 assertEq(x ^ 0xffffffff, -2);
michael@0 43 assertEq(0xffffffff ^ x, -2);
michael@0 44 assertEq(x >> 0xffffffff, 0);
michael@0 45 assertEq(0xffffffff >> x, -1);
michael@0 46 assertEq(x >>> 0xffffffff, 0);
michael@0 47 assertEq(0xffffffff >>> x, 2147483647);
michael@0 48 assertEq(x << 0xffffffff, -2147483648);
michael@0 49 assertEq(0xffffffff << x, -2);
michael@0 50 assertEq(x | "10.6", 11);
michael@0 51 assertEq("10.6" | x, 11);
michael@0 52 assertEq(x & "10.6", 0);
michael@0 53 assertEq("10.6" & x, 0);
michael@0 54 assertEq(x ^ "10.6", 11);
michael@0 55 assertEq("10.6" ^ x, 11);
michael@0 56 assertEq(x >> "10.6", 0);
michael@0 57 assertEq("10.6" >> x, 5);
michael@0 58 assertEq(x >>> "10.6", 0);
michael@0 59 assertEq("10.6" >>> x, 5);
michael@0 60 assertEq(x << "10.6", 1024);
michael@0 61 assertEq("10.6" << x, 20);
michael@0 62 assertEq(x | 2147483648, -2147483647);
michael@0 63 assertEq(2147483648 | x, -2147483647);
michael@0 64 assertEq(x & 2147483648, 0);
michael@0 65 assertEq(2147483648 & x, 0);
michael@0 66 assertEq(x ^ 2147483648, -2147483647);
michael@0 67 assertEq(2147483648 ^ x, -2147483647);
michael@0 68 assertEq(x >> 2147483648, 1);
michael@0 69 assertEq(2147483648 >> x, -1073741824);
michael@0 70 assertEq(x >>> 2147483648, 1);
michael@0 71 assertEq(2147483648 >>> x, 1073741824);
michael@0 72 assertEq(x << 2147483648, 1);
michael@0 73 assertEq(2147483648 << x, 0);
michael@0 74 assertEq(x | 4294967296, 1);
michael@0 75 assertEq(4294967296 | x, 1);
michael@0 76 assertEq(x & 4294967296, 0);
michael@0 77 assertEq(4294967296 & x, 0);
michael@0 78 assertEq(x ^ 4294967296, 1);
michael@0 79 assertEq(4294967296 ^ x, 1);
michael@0 80 assertEq(x >> 4294967296, 1);
michael@0 81 assertEq(4294967296 >> x, 0);
michael@0 82 assertEq(x >>> 4294967296, 1);
michael@0 83 assertEq(4294967296 >>> x, 0);
michael@0 84 assertEq(x << 4294967296, 1);
michael@0 85 assertEq(4294967296 << x, 0);
michael@0 86 assertEq(x | undefined, 1);
michael@0 87 assertEq(undefined | x, 1);
michael@0 88 assertEq(x & undefined, 0);
michael@0 89 assertEq(undefined & x, 0);
michael@0 90 assertEq(x ^ undefined, 1);
michael@0 91 assertEq(undefined ^ x, 1);
michael@0 92 assertEq(x >> undefined, 1);
michael@0 93 assertEq(undefined >> x, 0);
michael@0 94 assertEq(x >>> undefined, 1);
michael@0 95 assertEq(undefined >>> x, 0);
michael@0 96 assertEq(x << undefined, 1);
michael@0 97 assertEq(undefined << x, 0);
michael@0 98 assertEq(x | null, 1);
michael@0 99 assertEq(null | x, 1);
michael@0 100 assertEq(x & null, 0);
michael@0 101 assertEq(null & x, 0);
michael@0 102 assertEq(x ^ null, 1);
michael@0 103 assertEq(null ^ x, 1);
michael@0 104 assertEq(x >> null, 1);
michael@0 105 assertEq(null >> x, 0);
michael@0 106 assertEq(x >>> null, 1);
michael@0 107 assertEq(null >>> x, 0);
michael@0 108 assertEq(x << null, 1);
michael@0 109 assertEq(null << x, 0);
michael@0 110 assertEq(x | false, 1);
michael@0 111 assertEq(false | x, 1);
michael@0 112 assertEq(x & false, 0);
michael@0 113 assertEq(false & x, 0);
michael@0 114 assertEq(x ^ false, 1);
michael@0 115 assertEq(false ^ x, 1);
michael@0 116 assertEq(x >> false, 1);
michael@0 117 assertEq(false >> x, 0);
michael@0 118 assertEq(x >>> false, 1);
michael@0 119 assertEq(false >>> x, 0);
michael@0 120 assertEq(x << false, 1);
michael@0 121 assertEq(false << x, 0);
michael@0 122 assertEq(x | true, 1);
michael@0 123 assertEq(true | x, 1);
michael@0 124 assertEq(x & true, 1);
michael@0 125 assertEq(true & x, 1);
michael@0 126 assertEq(x ^ true, 0);
michael@0 127 assertEq(true ^ x, 0);
michael@0 128 assertEq(x >> true, 0);
michael@0 129 assertEq(true >> x, 0);
michael@0 130 assertEq(x >>> true, 0);
michael@0 131 assertEq(true >>> x, 0);
michael@0 132 assertEq(x << true, 2);
michael@0 133 assertEq(true << x, 2);
michael@0 134 assertEq(x | -1.5, -1);
michael@0 135 assertEq(-1.5 | x, -1);
michael@0 136 assertEq(x & -1.5, 1);
michael@0 137 assertEq(-1.5 & x, 1);
michael@0 138 assertEq(x ^ -1.5, -2);
michael@0 139 assertEq(-1.5 ^ x, -2);
michael@0 140 assertEq(x >> -1.5, 0);
michael@0 141 assertEq(-1.5 >> x, -1);
michael@0 142 assertEq(x >>> -1.5, 0);
michael@0 143 assertEq(-1.5 >>> x, 2147483647);
michael@0 144 assertEq(x << -1.5, -2147483648);
michael@0 145 assertEq(-1.5 << x, -2);
michael@0 146 }
michael@0 147 test1(1)
michael@0 148
michael@0 149 function test2 (x) {
michael@0 150 assertEq(x | -1, -1);
michael@0 151 assertEq(-1 | x, -1);
michael@0 152 assertEq(x & -1, 0);
michael@0 153 assertEq(-1 & x, 0);
michael@0 154 assertEq(x ^ -1, -1);
michael@0 155 assertEq(-1 ^ x, -1);
michael@0 156 assertEq(x >> -1, 0);
michael@0 157 assertEq(-1 >> x, -1);
michael@0 158 assertEq(x >>> -1, 0);
michael@0 159 assertEq(-1 >>> x, 4294967295);
michael@0 160 assertEq(x << -1, 0);
michael@0 161 assertEq(-1 << x, -1);
michael@0 162 assertEq(x | 1, 1);
michael@0 163 assertEq(1 | x, 1);
michael@0 164 assertEq(x & 1, 0);
michael@0 165 assertEq(1 & x, 0);
michael@0 166 assertEq(x ^ 1, 1);
michael@0 167 assertEq(1 ^ x, 1);
michael@0 168 assertEq(x >> 1, 0);
michael@0 169 assertEq(1 >> x, 1);
michael@0 170 assertEq(x >>> 1, 0);
michael@0 171 assertEq(1 >>> x, 1);
michael@0 172 assertEq(x << 1, 0);
michael@0 173 assertEq(1 << x, 1);
michael@0 174 assertEq(x | 0, 0);
michael@0 175 assertEq(0 | x, 0);
michael@0 176 assertEq(x & 0, 0);
michael@0 177 assertEq(0 & x, 0);
michael@0 178 assertEq(x ^ 0, 0);
michael@0 179 assertEq(0 ^ x, 0);
michael@0 180 assertEq(x >> 0, 0);
michael@0 181 assertEq(0 >> x, 0);
michael@0 182 assertEq(x >>> 0, 0);
michael@0 183 assertEq(0 >>> x, 0);
michael@0 184 assertEq(x << 0, 0);
michael@0 185 assertEq(0 << x, 0);
michael@0 186 assertEq(x | 0xffffffff, -1);
michael@0 187 assertEq(0xffffffff | x, -1);
michael@0 188 assertEq(x & 0xffffffff, 0);
michael@0 189 assertEq(0xffffffff & x, 0);
michael@0 190 assertEq(x ^ 0xffffffff, -1);
michael@0 191 assertEq(0xffffffff ^ x, -1);
michael@0 192 assertEq(x >> 0xffffffff, 0);
michael@0 193 assertEq(0xffffffff >> x, -1);
michael@0 194 assertEq(x >>> 0xffffffff, 0);
michael@0 195 assertEq(0xffffffff >>> x, 4294967295);
michael@0 196 assertEq(x << 0xffffffff, 0);
michael@0 197 assertEq(0xffffffff << x, -1);
michael@0 198 assertEq(x | "10.6", 10);
michael@0 199 assertEq("10.6" | x, 10);
michael@0 200 assertEq(x & "10.6", 0);
michael@0 201 assertEq("10.6" & x, 0);
michael@0 202 assertEq(x ^ "10.6", 10);
michael@0 203 assertEq("10.6" ^ x, 10);
michael@0 204 assertEq(x >> "10.6", 0);
michael@0 205 assertEq("10.6" >> x, 10);
michael@0 206 assertEq(x >>> "10.6", 0);
michael@0 207 assertEq("10.6" >>> x, 10);
michael@0 208 assertEq(x << "10.6", 0);
michael@0 209 assertEq("10.6" << x, 10);
michael@0 210 assertEq(x | 2147483648, -2147483648);
michael@0 211 assertEq(2147483648 | x, -2147483648);
michael@0 212 assertEq(x & 2147483648, 0);
michael@0 213 assertEq(2147483648 & x, 0);
michael@0 214 assertEq(x ^ 2147483648, -2147483648);
michael@0 215 assertEq(2147483648 ^ x, -2147483648);
michael@0 216 assertEq(x >> 2147483648, 0);
michael@0 217 assertEq(2147483648 >> x, -2147483648);
michael@0 218 assertEq(x >>> 2147483648, 0);
michael@0 219 assertEq(2147483648 >>> x, 2147483648);
michael@0 220 assertEq(x << 2147483648, 0);
michael@0 221 assertEq(2147483648 << x, -2147483648);
michael@0 222 assertEq(x | 4294967296, 0);
michael@0 223 assertEq(4294967296 | x, 0);
michael@0 224 assertEq(x & 4294967296, 0);
michael@0 225 assertEq(4294967296 & x, 0);
michael@0 226 assertEq(x ^ 4294967296, 0);
michael@0 227 assertEq(4294967296 ^ x, 0);
michael@0 228 assertEq(x >> 4294967296, 0);
michael@0 229 assertEq(4294967296 >> x, 0);
michael@0 230 assertEq(x >>> 4294967296, 0);
michael@0 231 assertEq(4294967296 >>> x, 0);
michael@0 232 assertEq(x << 4294967296, 0);
michael@0 233 assertEq(4294967296 << x, 0);
michael@0 234 assertEq(x | undefined, 0);
michael@0 235 assertEq(undefined | x, 0);
michael@0 236 assertEq(x & undefined, 0);
michael@0 237 assertEq(undefined & x, 0);
michael@0 238 assertEq(x ^ undefined, 0);
michael@0 239 assertEq(undefined ^ x, 0);
michael@0 240 assertEq(x >> undefined, 0);
michael@0 241 assertEq(undefined >> x, 0);
michael@0 242 assertEq(x >>> undefined, 0);
michael@0 243 assertEq(undefined >>> x, 0);
michael@0 244 assertEq(x << undefined, 0);
michael@0 245 assertEq(undefined << x, 0);
michael@0 246 assertEq(x | null, 0);
michael@0 247 assertEq(null | x, 0);
michael@0 248 assertEq(x & null, 0);
michael@0 249 assertEq(null & x, 0);
michael@0 250 assertEq(x ^ null, 0);
michael@0 251 assertEq(null ^ x, 0);
michael@0 252 assertEq(x >> null, 0);
michael@0 253 assertEq(null >> x, 0);
michael@0 254 assertEq(x >>> null, 0);
michael@0 255 assertEq(null >>> x, 0);
michael@0 256 assertEq(x << null, 0);
michael@0 257 assertEq(null << x, 0);
michael@0 258 assertEq(x | false, 0);
michael@0 259 assertEq(false | x, 0);
michael@0 260 assertEq(x & false, 0);
michael@0 261 assertEq(false & x, 0);
michael@0 262 assertEq(x ^ false, 0);
michael@0 263 assertEq(false ^ x, 0);
michael@0 264 assertEq(x >> false, 0);
michael@0 265 assertEq(false >> x, 0);
michael@0 266 assertEq(x >>> false, 0);
michael@0 267 assertEq(false >>> x, 0);
michael@0 268 assertEq(x << false, 0);
michael@0 269 assertEq(false << x, 0);
michael@0 270 assertEq(x | true, 1);
michael@0 271 assertEq(true | x, 1);
michael@0 272 assertEq(x & true, 0);
michael@0 273 assertEq(true & x, 0);
michael@0 274 assertEq(x ^ true, 1);
michael@0 275 assertEq(true ^ x, 1);
michael@0 276 assertEq(x >> true, 0);
michael@0 277 assertEq(true >> x, 1);
michael@0 278 assertEq(x >>> true, 0);
michael@0 279 assertEq(true >>> x, 1);
michael@0 280 assertEq(x << true, 0);
michael@0 281 assertEq(true << x, 1);
michael@0 282 assertEq(x | -1.5, -1);
michael@0 283 assertEq(-1.5 | x, -1);
michael@0 284 assertEq(x & -1.5, 0);
michael@0 285 assertEq(-1.5 & x, 0);
michael@0 286 assertEq(x ^ -1.5, -1);
michael@0 287 assertEq(-1.5 ^ x, -1);
michael@0 288 assertEq(x >> -1.5, 0);
michael@0 289 assertEq(-1.5 >> x, -1);
michael@0 290 assertEq(x >>> -1.5, 0);
michael@0 291 assertEq(-1.5 >>> x, 4294967295);
michael@0 292 assertEq(x << -1.5, 0);
michael@0 293 assertEq(-1.5 << x, -1);
michael@0 294 }
michael@0 295 test2(0)
michael@0 296
michael@0 297 function test3 (x) {
michael@0 298 assertEq(x | -1, -1);
michael@0 299 assertEq(-1 | x, -1);
michael@0 300 assertEq(x & -1, -1);
michael@0 301 assertEq(-1 & x, -1);
michael@0 302 assertEq(x ^ -1, 0);
michael@0 303 assertEq(-1 ^ x, 0);
michael@0 304 assertEq(x >> -1, -1);
michael@0 305 assertEq(-1 >> x, -1);
michael@0 306 assertEq(x >>> -1, 1);
michael@0 307 assertEq(-1 >>> x, 1);
michael@0 308 assertEq(x << -1, -2147483648);
michael@0 309 assertEq(-1 << x, -2147483648);
michael@0 310 assertEq(x | 1, -1);
michael@0 311 assertEq(1 | x, -1);
michael@0 312 assertEq(x & 1, 1);
michael@0 313 assertEq(1 & x, 1);
michael@0 314 assertEq(x ^ 1, -2);
michael@0 315 assertEq(1 ^ x, -2);
michael@0 316 assertEq(x >> 1, -1);
michael@0 317 assertEq(1 >> x, 0);
michael@0 318 assertEq(x >>> 1, 2147483647);
michael@0 319 assertEq(1 >>> x, 0);
michael@0 320 assertEq(x << 1, -2);
michael@0 321 assertEq(1 << x, -2147483648);
michael@0 322 assertEq(x | 0, -1);
michael@0 323 assertEq(0 | x, -1);
michael@0 324 assertEq(x & 0, 0);
michael@0 325 assertEq(0 & x, 0);
michael@0 326 assertEq(x ^ 0, -1);
michael@0 327 assertEq(0 ^ x, -1);
michael@0 328 assertEq(x >> 0, -1);
michael@0 329 assertEq(0 >> x, 0);
michael@0 330 assertEq(x >>> 0, 4294967295);
michael@0 331 assertEq(0 >>> x, 0);
michael@0 332 assertEq(x << 0, -1);
michael@0 333 assertEq(0 << x, 0);
michael@0 334 assertEq(x | 0xffffffff, -1);
michael@0 335 assertEq(0xffffffff | x, -1);
michael@0 336 assertEq(x & 0xffffffff, -1);
michael@0 337 assertEq(0xffffffff & x, -1);
michael@0 338 assertEq(x ^ 0xffffffff, 0);
michael@0 339 assertEq(0xffffffff ^ x, 0);
michael@0 340 assertEq(x >> 0xffffffff, -1);
michael@0 341 assertEq(0xffffffff >> x, -1);
michael@0 342 assertEq(x >>> 0xffffffff, 1);
michael@0 343 assertEq(0xffffffff >>> x, 1);
michael@0 344 assertEq(x << 0xffffffff, -2147483648);
michael@0 345 assertEq(0xffffffff << x, -2147483648);
michael@0 346 assertEq(x | "10.6", -1);
michael@0 347 assertEq("10.6" | x, -1);
michael@0 348 assertEq(x & "10.6", 10);
michael@0 349 assertEq("10.6" & x, 10);
michael@0 350 assertEq(x ^ "10.6", -11);
michael@0 351 assertEq("10.6" ^ x, -11);
michael@0 352 assertEq(x >> "10.6", -1);
michael@0 353 assertEq("10.6" >> x, 0);
michael@0 354 assertEq(x >>> "10.6", 4194303);
michael@0 355 assertEq("10.6" >>> x, 0);
michael@0 356 assertEq(x << "10.6", -1024);
michael@0 357 assertEq("10.6" << x, 0);
michael@0 358 assertEq(x | 2147483648, -1);
michael@0 359 assertEq(2147483648 | x, -1);
michael@0 360 assertEq(x & 2147483648, -2147483648);
michael@0 361 assertEq(2147483648 & x, -2147483648);
michael@0 362 assertEq(x ^ 2147483648, 2147483647);
michael@0 363 assertEq(2147483648 ^ x, 2147483647);
michael@0 364 assertEq(x >> 2147483648, -1);
michael@0 365 assertEq(2147483648 >> x, -1);
michael@0 366 assertEq(x >>> 2147483648, 4294967295);
michael@0 367 assertEq(2147483648 >>> x, 1);
michael@0 368 assertEq(x << 2147483648, -1);
michael@0 369 assertEq(2147483648 << x, 0);
michael@0 370 assertEq(x | 4294967296, -1);
michael@0 371 assertEq(4294967296 | x, -1);
michael@0 372 assertEq(x & 4294967296, 0);
michael@0 373 assertEq(4294967296 & x, 0);
michael@0 374 assertEq(x ^ 4294967296, -1);
michael@0 375 assertEq(4294967296 ^ x, -1);
michael@0 376 assertEq(x >> 4294967296, -1);
michael@0 377 assertEq(4294967296 >> x, 0);
michael@0 378 assertEq(x >>> 4294967296, 4294967295);
michael@0 379 assertEq(4294967296 >>> x, 0);
michael@0 380 assertEq(x << 4294967296, -1);
michael@0 381 assertEq(4294967296 << x, 0);
michael@0 382 assertEq(x | undefined, -1);
michael@0 383 assertEq(undefined | x, -1);
michael@0 384 assertEq(x & undefined, 0);
michael@0 385 assertEq(undefined & x, 0);
michael@0 386 assertEq(x ^ undefined, -1);
michael@0 387 assertEq(undefined ^ x, -1);
michael@0 388 assertEq(x >> undefined, -1);
michael@0 389 assertEq(undefined >> x, 0);
michael@0 390 assertEq(x >>> undefined, 4294967295);
michael@0 391 assertEq(undefined >>> x, 0);
michael@0 392 assertEq(x << undefined, -1);
michael@0 393 assertEq(undefined << x, 0);
michael@0 394 assertEq(x | null, -1);
michael@0 395 assertEq(null | x, -1);
michael@0 396 assertEq(x & null, 0);
michael@0 397 assertEq(null & x, 0);
michael@0 398 assertEq(x ^ null, -1);
michael@0 399 assertEq(null ^ x, -1);
michael@0 400 assertEq(x >> null, -1);
michael@0 401 assertEq(null >> x, 0);
michael@0 402 assertEq(x >>> null, 4294967295);
michael@0 403 assertEq(null >>> x, 0);
michael@0 404 assertEq(x << null, -1);
michael@0 405 assertEq(null << x, 0);
michael@0 406 assertEq(x | false, -1);
michael@0 407 assertEq(false | x, -1);
michael@0 408 assertEq(x & false, 0);
michael@0 409 assertEq(false & x, 0);
michael@0 410 assertEq(x ^ false, -1);
michael@0 411 assertEq(false ^ x, -1);
michael@0 412 assertEq(x >> false, -1);
michael@0 413 assertEq(false >> x, 0);
michael@0 414 assertEq(x >>> false, 4294967295);
michael@0 415 assertEq(false >>> x, 0);
michael@0 416 assertEq(x << false, -1);
michael@0 417 assertEq(false << x, 0);
michael@0 418 assertEq(x | true, -1);
michael@0 419 assertEq(true | x, -1);
michael@0 420 assertEq(x & true, 1);
michael@0 421 assertEq(true & x, 1);
michael@0 422 assertEq(x ^ true, -2);
michael@0 423 assertEq(true ^ x, -2);
michael@0 424 assertEq(x >> true, -1);
michael@0 425 assertEq(true >> x, 0);
michael@0 426 assertEq(x >>> true, 2147483647);
michael@0 427 assertEq(true >>> x, 0);
michael@0 428 assertEq(x << true, -2);
michael@0 429 assertEq(true << x, -2147483648);
michael@0 430 assertEq(x | -1.5, -1);
michael@0 431 assertEq(-1.5 | x, -1);
michael@0 432 assertEq(x & -1.5, -1);
michael@0 433 assertEq(-1.5 & x, -1);
michael@0 434 assertEq(x ^ -1.5, 0);
michael@0 435 assertEq(-1.5 ^ x, 0);
michael@0 436 assertEq(x >> -1.5, -1);
michael@0 437 assertEq(-1.5 >> x, -1);
michael@0 438 assertEq(x >>> -1.5, 1);
michael@0 439 assertEq(-1.5 >>> x, 1);
michael@0 440 assertEq(x << -1.5, -2147483648);
michael@0 441 assertEq(-1.5 << x, -2147483648);
michael@0 442 }
michael@0 443 test3(-1)
michael@0 444
michael@0 445 function test4 (x) {
michael@0 446 assertEq(x | -1, -1);
michael@0 447 assertEq(-1 | x, -1);
michael@0 448 assertEq(x & -1, -2147483648);
michael@0 449 assertEq(-1 & x, -2147483648);
michael@0 450 assertEq(x ^ -1, 2147483647);
michael@0 451 assertEq(-1 ^ x, 2147483647);
michael@0 452 assertEq(x >> -1, -1);
michael@0 453 assertEq(-1 >> x, -1);
michael@0 454 assertEq(x >>> -1, 1);
michael@0 455 assertEq(-1 >>> x, 4294967295);
michael@0 456 assertEq(x << -1, 0);
michael@0 457 assertEq(-1 << x, -1);
michael@0 458 assertEq(x | 1, -2147483647);
michael@0 459 assertEq(1 | x, -2147483647);
michael@0 460 assertEq(x & 1, 0);
michael@0 461 assertEq(1 & x, 0);
michael@0 462 assertEq(x ^ 1, -2147483647);
michael@0 463 assertEq(1 ^ x, -2147483647);
michael@0 464 assertEq(x >> 1, -1073741824);
michael@0 465 assertEq(1 >> x, 1);
michael@0 466 assertEq(x >>> 1, 1073741824);
michael@0 467 assertEq(1 >>> x, 1);
michael@0 468 assertEq(x << 1, 0);
michael@0 469 assertEq(1 << x, 1);
michael@0 470 assertEq(x | 0, -2147483648);
michael@0 471 assertEq(0 | x, -2147483648);
michael@0 472 assertEq(x & 0, 0);
michael@0 473 assertEq(0 & x, 0);
michael@0 474 assertEq(x ^ 0, -2147483648);
michael@0 475 assertEq(0 ^ x, -2147483648);
michael@0 476 assertEq(x >> 0, -2147483648);
michael@0 477 assertEq(0 >> x, 0);
michael@0 478 assertEq(x >>> 0, 2147483648);
michael@0 479 assertEq(0 >>> x, 0);
michael@0 480 assertEq(x << 0, -2147483648);
michael@0 481 assertEq(0 << x, 0);
michael@0 482 assertEq(x | 0xffffffff, -1);
michael@0 483 assertEq(0xffffffff | x, -1);
michael@0 484 assertEq(x & 0xffffffff, -2147483648);
michael@0 485 assertEq(0xffffffff & x, -2147483648);
michael@0 486 assertEq(x ^ 0xffffffff, 2147483647);
michael@0 487 assertEq(0xffffffff ^ x, 2147483647);
michael@0 488 assertEq(x >> 0xffffffff, -1);
michael@0 489 assertEq(0xffffffff >> x, -1);
michael@0 490 assertEq(x >>> 0xffffffff, 1);
michael@0 491 assertEq(0xffffffff >>> x, 4294967295);
michael@0 492 assertEq(x << 0xffffffff, 0);
michael@0 493 assertEq(0xffffffff << x, -1);
michael@0 494 assertEq(x | "10.6", -2147483638);
michael@0 495 assertEq("10.6" | x, -2147483638);
michael@0 496 assertEq(x & "10.6", 0);
michael@0 497 assertEq("10.6" & x, 0);
michael@0 498 assertEq(x ^ "10.6", -2147483638);
michael@0 499 assertEq("10.6" ^ x, -2147483638);
michael@0 500 assertEq(x >> "10.6", -2097152);
michael@0 501 assertEq("10.6" >> x, 10);
michael@0 502 assertEq(x >>> "10.6", 2097152);
michael@0 503 assertEq("10.6" >>> x, 10);
michael@0 504 assertEq(x << "10.6", 0);
michael@0 505 assertEq("10.6" << x, 10);
michael@0 506 assertEq(x | 2147483648, -2147483648);
michael@0 507 assertEq(2147483648 | x, -2147483648);
michael@0 508 assertEq(x & 2147483648, -2147483648);
michael@0 509 assertEq(2147483648 & x, -2147483648);
michael@0 510 assertEq(x ^ 2147483648, 0);
michael@0 511 assertEq(2147483648 ^ x, 0);
michael@0 512 assertEq(x >> 2147483648, -2147483648);
michael@0 513 assertEq(2147483648 >> x, -2147483648);
michael@0 514 assertEq(x >>> 2147483648, 2147483648);
michael@0 515 assertEq(2147483648 >>> x, 2147483648);
michael@0 516 assertEq(x << 2147483648, -2147483648);
michael@0 517 assertEq(2147483648 << x, -2147483648);
michael@0 518 assertEq(x | 4294967296, -2147483648);
michael@0 519 assertEq(4294967296 | x, -2147483648);
michael@0 520 assertEq(x & 4294967296, 0);
michael@0 521 assertEq(4294967296 & x, 0);
michael@0 522 assertEq(x ^ 4294967296, -2147483648);
michael@0 523 assertEq(4294967296 ^ x, -2147483648);
michael@0 524 assertEq(x >> 4294967296, -2147483648);
michael@0 525 assertEq(4294967296 >> x, 0);
michael@0 526 assertEq(x >>> 4294967296, 2147483648);
michael@0 527 assertEq(4294967296 >>> x, 0);
michael@0 528 assertEq(x << 4294967296, -2147483648);
michael@0 529 assertEq(4294967296 << x, 0);
michael@0 530 assertEq(x | undefined, -2147483648);
michael@0 531 assertEq(undefined | x, -2147483648);
michael@0 532 assertEq(x & undefined, 0);
michael@0 533 assertEq(undefined & x, 0);
michael@0 534 assertEq(x ^ undefined, -2147483648);
michael@0 535 assertEq(undefined ^ x, -2147483648);
michael@0 536 assertEq(x >> undefined, -2147483648);
michael@0 537 assertEq(undefined >> x, 0);
michael@0 538 assertEq(x >>> undefined, 2147483648);
michael@0 539 assertEq(undefined >>> x, 0);
michael@0 540 assertEq(x << undefined, -2147483648);
michael@0 541 assertEq(undefined << x, 0);
michael@0 542 assertEq(x | null, -2147483648);
michael@0 543 assertEq(null | x, -2147483648);
michael@0 544 assertEq(x & null, 0);
michael@0 545 assertEq(null & x, 0);
michael@0 546 assertEq(x ^ null, -2147483648);
michael@0 547 assertEq(null ^ x, -2147483648);
michael@0 548 assertEq(x >> null, -2147483648);
michael@0 549 assertEq(null >> x, 0);
michael@0 550 assertEq(x >>> null, 2147483648);
michael@0 551 assertEq(null >>> x, 0);
michael@0 552 assertEq(x << null, -2147483648);
michael@0 553 assertEq(null << x, 0);
michael@0 554 assertEq(x | false, -2147483648);
michael@0 555 assertEq(false | x, -2147483648);
michael@0 556 assertEq(x & false, 0);
michael@0 557 assertEq(false & x, 0);
michael@0 558 assertEq(x ^ false, -2147483648);
michael@0 559 assertEq(false ^ x, -2147483648);
michael@0 560 assertEq(x >> false, -2147483648);
michael@0 561 assertEq(false >> x, 0);
michael@0 562 assertEq(x >>> false, 2147483648);
michael@0 563 assertEq(false >>> x, 0);
michael@0 564 assertEq(x << false, -2147483648);
michael@0 565 assertEq(false << x, 0);
michael@0 566 assertEq(x | true, -2147483647);
michael@0 567 assertEq(true | x, -2147483647);
michael@0 568 assertEq(x & true, 0);
michael@0 569 assertEq(true & x, 0);
michael@0 570 assertEq(x ^ true, -2147483647);
michael@0 571 assertEq(true ^ x, -2147483647);
michael@0 572 assertEq(x >> true, -1073741824);
michael@0 573 assertEq(true >> x, 1);
michael@0 574 assertEq(x >>> true, 1073741824);
michael@0 575 assertEq(true >>> x, 1);
michael@0 576 assertEq(x << true, 0);
michael@0 577 assertEq(true << x, 1);
michael@0 578 assertEq(x | -1.5, -1);
michael@0 579 assertEq(-1.5 | x, -1);
michael@0 580 assertEq(x & -1.5, -2147483648);
michael@0 581 assertEq(-1.5 & x, -2147483648);
michael@0 582 assertEq(x ^ -1.5, 2147483647);
michael@0 583 assertEq(-1.5 ^ x, 2147483647);
michael@0 584 assertEq(x >> -1.5, -1);
michael@0 585 assertEq(-1.5 >> x, -1);
michael@0 586 assertEq(x >>> -1.5, 1);
michael@0 587 assertEq(-1.5 >>> x, 4294967295);
michael@0 588 assertEq(x << -1.5, 0);
michael@0 589 assertEq(-1.5 << x, -1);
michael@0 590 }
michael@0 591 test4(2147483648)
michael@0 592
michael@0 593 function test5 (x) {
michael@0 594 assertEq(x | -1, -1);
michael@0 595 assertEq(-1 | x, -1);
michael@0 596 assertEq(x & -1, -2147483648);
michael@0 597 assertEq(-1 & x, -2147483648);
michael@0 598 assertEq(x ^ -1, 2147483647);
michael@0 599 assertEq(-1 ^ x, 2147483647);
michael@0 600 assertEq(x >> -1, -1);
michael@0 601 assertEq(-1 >> x, -1);
michael@0 602 assertEq(x >>> -1, 1);
michael@0 603 assertEq(-1 >>> x, 4294967295);
michael@0 604 assertEq(x << -1, 0);
michael@0 605 assertEq(-1 << x, -1);
michael@0 606 assertEq(x | 1, -2147483647);
michael@0 607 assertEq(1 | x, -2147483647);
michael@0 608 assertEq(x & 1, 0);
michael@0 609 assertEq(1 & x, 0);
michael@0 610 assertEq(x ^ 1, -2147483647);
michael@0 611 assertEq(1 ^ x, -2147483647);
michael@0 612 assertEq(x >> 1, -1073741824);
michael@0 613 assertEq(1 >> x, 1);
michael@0 614 assertEq(x >>> 1, 1073741824);
michael@0 615 assertEq(1 >>> x, 1);
michael@0 616 assertEq(x << 1, 0);
michael@0 617 assertEq(1 << x, 1);
michael@0 618 assertEq(x | 0, -2147483648);
michael@0 619 assertEq(0 | x, -2147483648);
michael@0 620 assertEq(x & 0, 0);
michael@0 621 assertEq(0 & x, 0);
michael@0 622 assertEq(x ^ 0, -2147483648);
michael@0 623 assertEq(0 ^ x, -2147483648);
michael@0 624 assertEq(x >> 0, -2147483648);
michael@0 625 assertEq(0 >> x, 0);
michael@0 626 assertEq(x >>> 0, 2147483648);
michael@0 627 assertEq(0 >>> x, 0);
michael@0 628 assertEq(x << 0, -2147483648);
michael@0 629 assertEq(0 << x, 0);
michael@0 630 assertEq(x | 0xffffffff, -1);
michael@0 631 assertEq(0xffffffff | x, -1);
michael@0 632 assertEq(x & 0xffffffff, -2147483648);
michael@0 633 assertEq(0xffffffff & x, -2147483648);
michael@0 634 assertEq(x ^ 0xffffffff, 2147483647);
michael@0 635 assertEq(0xffffffff ^ x, 2147483647);
michael@0 636 assertEq(x >> 0xffffffff, -1);
michael@0 637 assertEq(0xffffffff >> x, -1);
michael@0 638 assertEq(x >>> 0xffffffff, 1);
michael@0 639 assertEq(0xffffffff >>> x, 4294967295);
michael@0 640 assertEq(x << 0xffffffff, 0);
michael@0 641 assertEq(0xffffffff << x, -1);
michael@0 642 assertEq(x | "10.6", -2147483638);
michael@0 643 assertEq("10.6" | x, -2147483638);
michael@0 644 assertEq(x & "10.6", 0);
michael@0 645 assertEq("10.6" & x, 0);
michael@0 646 assertEq(x ^ "10.6", -2147483638);
michael@0 647 assertEq("10.6" ^ x, -2147483638);
michael@0 648 assertEq(x >> "10.6", -2097152);
michael@0 649 assertEq("10.6" >> x, 10);
michael@0 650 assertEq(x >>> "10.6", 2097152);
michael@0 651 assertEq("10.6" >>> x, 10);
michael@0 652 assertEq(x << "10.6", 0);
michael@0 653 assertEq("10.6" << x, 10);
michael@0 654 assertEq(x | 2147483648, -2147483648);
michael@0 655 assertEq(2147483648 | x, -2147483648);
michael@0 656 assertEq(x & 2147483648, -2147483648);
michael@0 657 assertEq(2147483648 & x, -2147483648);
michael@0 658 assertEq(x ^ 2147483648, 0);
michael@0 659 assertEq(2147483648 ^ x, 0);
michael@0 660 assertEq(x >> 2147483648, -2147483648);
michael@0 661 assertEq(2147483648 >> x, -2147483648);
michael@0 662 assertEq(x >>> 2147483648, 2147483648);
michael@0 663 assertEq(2147483648 >>> x, 2147483648);
michael@0 664 assertEq(x << 2147483648, -2147483648);
michael@0 665 assertEq(2147483648 << x, -2147483648);
michael@0 666 assertEq(x | 4294967296, -2147483648);
michael@0 667 assertEq(4294967296 | x, -2147483648);
michael@0 668 assertEq(x & 4294967296, 0);
michael@0 669 assertEq(4294967296 & x, 0);
michael@0 670 assertEq(x ^ 4294967296, -2147483648);
michael@0 671 assertEq(4294967296 ^ x, -2147483648);
michael@0 672 assertEq(x >> 4294967296, -2147483648);
michael@0 673 assertEq(4294967296 >> x, 0);
michael@0 674 assertEq(x >>> 4294967296, 2147483648);
michael@0 675 assertEq(4294967296 >>> x, 0);
michael@0 676 assertEq(x << 4294967296, -2147483648);
michael@0 677 assertEq(4294967296 << x, 0);
michael@0 678 assertEq(x | undefined, -2147483648);
michael@0 679 assertEq(undefined | x, -2147483648);
michael@0 680 assertEq(x & undefined, 0);
michael@0 681 assertEq(undefined & x, 0);
michael@0 682 assertEq(x ^ undefined, -2147483648);
michael@0 683 assertEq(undefined ^ x, -2147483648);
michael@0 684 assertEq(x >> undefined, -2147483648);
michael@0 685 assertEq(undefined >> x, 0);
michael@0 686 assertEq(x >>> undefined, 2147483648);
michael@0 687 assertEq(undefined >>> x, 0);
michael@0 688 assertEq(x << undefined, -2147483648);
michael@0 689 assertEq(undefined << x, 0);
michael@0 690 assertEq(x | null, -2147483648);
michael@0 691 assertEq(null | x, -2147483648);
michael@0 692 assertEq(x & null, 0);
michael@0 693 assertEq(null & x, 0);
michael@0 694 assertEq(x ^ null, -2147483648);
michael@0 695 assertEq(null ^ x, -2147483648);
michael@0 696 assertEq(x >> null, -2147483648);
michael@0 697 assertEq(null >> x, 0);
michael@0 698 assertEq(x >>> null, 2147483648);
michael@0 699 assertEq(null >>> x, 0);
michael@0 700 assertEq(x << null, -2147483648);
michael@0 701 assertEq(null << x, 0);
michael@0 702 assertEq(x | false, -2147483648);
michael@0 703 assertEq(false | x, -2147483648);
michael@0 704 assertEq(x & false, 0);
michael@0 705 assertEq(false & x, 0);
michael@0 706 assertEq(x ^ false, -2147483648);
michael@0 707 assertEq(false ^ x, -2147483648);
michael@0 708 assertEq(x >> false, -2147483648);
michael@0 709 assertEq(false >> x, 0);
michael@0 710 assertEq(x >>> false, 2147483648);
michael@0 711 assertEq(false >>> x, 0);
michael@0 712 assertEq(x << false, -2147483648);
michael@0 713 assertEq(false << x, 0);
michael@0 714 assertEq(x | true, -2147483647);
michael@0 715 assertEq(true | x, -2147483647);
michael@0 716 assertEq(x & true, 0);
michael@0 717 assertEq(true & x, 0);
michael@0 718 assertEq(x ^ true, -2147483647);
michael@0 719 assertEq(true ^ x, -2147483647);
michael@0 720 assertEq(x >> true, -1073741824);
michael@0 721 assertEq(true >> x, 1);
michael@0 722 assertEq(x >>> true, 1073741824);
michael@0 723 assertEq(true >>> x, 1);
michael@0 724 assertEq(x << true, 0);
michael@0 725 assertEq(true << x, 1);
michael@0 726 assertEq(x | -1.5, -1);
michael@0 727 assertEq(-1.5 | x, -1);
michael@0 728 assertEq(x & -1.5, -2147483648);
michael@0 729 assertEq(-1.5 & x, -2147483648);
michael@0 730 assertEq(x ^ -1.5, 2147483647);
michael@0 731 assertEq(-1.5 ^ x, 2147483647);
michael@0 732 assertEq(x >> -1.5, -1);
michael@0 733 assertEq(-1.5 >> x, -1);
michael@0 734 assertEq(x >>> -1.5, 1);
michael@0 735 assertEq(-1.5 >>> x, 4294967295);
michael@0 736 assertEq(x << -1.5, 0);
michael@0 737 assertEq(-1.5 << x, -1);
michael@0 738 }
michael@0 739 test5(-2147483648)
michael@0 740
michael@0 741

mercurial