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