asUintN.js (13869B)
1 const tests = [ 2 [-0x10000000000000001n, 0, 0n], 3 [-0x10000000000000000n, 0, 0n], 4 [-0xffffffffffffffffn, 0, 0n], 5 [-0xfffffffffffffffen, 0, 0n], 6 [-0x8000000000000001n, 0, 0n], 7 [-0x8000000000000000n, 0, 0n], 8 [-0x7fffffffffffffffn, 0, 0n], 9 [-0x7ffffffffffffffen, 0, 0n], 10 [-0x100000001n, 0, 0n], 11 [-0x100000000n, 0, 0n], 12 [-0xffffffffn, 0, 0n], 13 [-0xfffffffen, 0, 0n], 14 [-0x80000001n, 0, 0n], 15 [-0x80000000n, 0, 0n], 16 [-0x7fffffffn, 0, 0n], 17 [-0x7ffffffen, 0, 0n], 18 [-9n, 0, 0n], 19 [-8n, 0, 0n], 20 [-7n, 0, 0n], 21 [-6n, 0, 0n], 22 [-5n, 0, 0n], 23 [-4n, 0, 0n], 24 [-3n, 0, 0n], 25 [-2n, 0, 0n], 26 [-1n, 0, 0n], 27 [0n, 0, 0n], 28 [1n, 0, 0n], 29 [2n, 0, 0n], 30 [3n, 0, 0n], 31 [4n, 0, 0n], 32 [5n, 0, 0n], 33 [6n, 0, 0n], 34 [7n, 0, 0n], 35 [8n, 0, 0n], 36 [9n, 0, 0n], 37 [0x7ffffffen, 0, 0n], 38 [0x7fffffffn, 0, 0n], 39 [0x80000000n, 0, 0n], 40 [0x80000001n, 0, 0n], 41 [0xfffffffen, 0, 0n], 42 [0xffffffffn, 0, 0n], 43 [0x100000000n, 0, 0n], 44 [0x100000001n, 0, 0n], 45 [0x7ffffffffffffffen, 0, 0n], 46 [0x7fffffffffffffffn, 0, 0n], 47 [0x8000000000000000n, 0, 0n], 48 [0x8000000000000001n, 0, 0n], 49 [0xfffffffffffffffen, 0, 0n], 50 [0xffffffffffffffffn, 0, 0n], 51 [0x10000000000000000n, 0, 0n], 52 [0x10000000000000001n, 0, 0n], 53 [-0x10000000000000001n, 1, 1n], 54 [-0x10000000000000000n, 1, 0n], 55 [-0xffffffffffffffffn, 1, 1n], 56 [-0xfffffffffffffffen, 1, 0n], 57 [-0x8000000000000001n, 1, 1n], 58 [-0x8000000000000000n, 1, 0n], 59 [-0x7fffffffffffffffn, 1, 1n], 60 [-0x7ffffffffffffffen, 1, 0n], 61 [-0x100000001n, 1, 1n], 62 [-0x100000000n, 1, 0n], 63 [-0xffffffffn, 1, 1n], 64 [-0xfffffffen, 1, 0n], 65 [-0x80000001n, 1, 1n], 66 [-0x80000000n, 1, 0n], 67 [-0x7fffffffn, 1, 1n], 68 [-0x7ffffffen, 1, 0n], 69 [-9n, 1, 1n], 70 [-8n, 1, 0n], 71 [-7n, 1, 1n], 72 [-6n, 1, 0n], 73 [-5n, 1, 1n], 74 [-4n, 1, 0n], 75 [-3n, 1, 1n], 76 [-2n, 1, 0n], 77 [-1n, 1, 1n], 78 [0n, 1, 0n], 79 [1n, 1, 1n], 80 [2n, 1, 0n], 81 [3n, 1, 1n], 82 [4n, 1, 0n], 83 [5n, 1, 1n], 84 [6n, 1, 0n], 85 [7n, 1, 1n], 86 [8n, 1, 0n], 87 [9n, 1, 1n], 88 [0x7ffffffen, 1, 0n], 89 [0x7fffffffn, 1, 1n], 90 [0x80000000n, 1, 0n], 91 [0x80000001n, 1, 1n], 92 [0xfffffffen, 1, 0n], 93 [0xffffffffn, 1, 1n], 94 [0x100000000n, 1, 0n], 95 [0x100000001n, 1, 1n], 96 [0x7ffffffffffffffen, 1, 0n], 97 [0x7fffffffffffffffn, 1, 1n], 98 [0x8000000000000000n, 1, 0n], 99 [0x8000000000000001n, 1, 1n], 100 [0xfffffffffffffffen, 1, 0n], 101 [0xffffffffffffffffn, 1, 1n], 102 [0x10000000000000000n, 1, 0n], 103 [0x10000000000000001n, 1, 1n], 104 [-0x10000000000000001n, 2, 3n], 105 [-0x10000000000000000n, 2, 0n], 106 [-0xffffffffffffffffn, 2, 1n], 107 [-0xfffffffffffffffen, 2, 2n], 108 [-0x8000000000000001n, 2, 3n], 109 [-0x8000000000000000n, 2, 0n], 110 [-0x7fffffffffffffffn, 2, 1n], 111 [-0x7ffffffffffffffen, 2, 2n], 112 [-0x100000001n, 2, 3n], 113 [-0x100000000n, 2, 0n], 114 [-0xffffffffn, 2, 1n], 115 [-0xfffffffen, 2, 2n], 116 [-0x80000001n, 2, 3n], 117 [-0x80000000n, 2, 0n], 118 [-0x7fffffffn, 2, 1n], 119 [-0x7ffffffen, 2, 2n], 120 [-9n, 2, 3n], 121 [-8n, 2, 0n], 122 [-7n, 2, 1n], 123 [-6n, 2, 2n], 124 [-5n, 2, 3n], 125 [-4n, 2, 0n], 126 [-3n, 2, 1n], 127 [-2n, 2, 2n], 128 [-1n, 2, 3n], 129 [0n, 2, 0n], 130 [1n, 2, 1n], 131 [2n, 2, 2n], 132 [3n, 2, 3n], 133 [4n, 2, 0n], 134 [5n, 2, 1n], 135 [6n, 2, 2n], 136 [7n, 2, 3n], 137 [8n, 2, 0n], 138 [9n, 2, 1n], 139 [0x7ffffffen, 2, 2n], 140 [0x7fffffffn, 2, 3n], 141 [0x80000000n, 2, 0n], 142 [0x80000001n, 2, 1n], 143 [0xfffffffen, 2, 2n], 144 [0xffffffffn, 2, 3n], 145 [0x100000000n, 2, 0n], 146 [0x100000001n, 2, 1n], 147 [0x7ffffffffffffffen, 2, 2n], 148 [0x7fffffffffffffffn, 2, 3n], 149 [0x8000000000000000n, 2, 0n], 150 [0x8000000000000001n, 2, 1n], 151 [0xfffffffffffffffen, 2, 2n], 152 [0xffffffffffffffffn, 2, 3n], 153 [0x10000000000000000n, 2, 0n], 154 [0x10000000000000001n, 2, 1n], 155 [-0x10000000000000001n, 31, 0x7fffffffn], 156 [-0x10000000000000000n, 31, 0n], 157 [-0xffffffffffffffffn, 31, 1n], 158 [-0xfffffffffffffffen, 31, 2n], 159 [-0x8000000000000001n, 31, 0x7fffffffn], 160 [-0x8000000000000000n, 31, 0n], 161 [-0x7fffffffffffffffn, 31, 1n], 162 [-0x7ffffffffffffffen, 31, 2n], 163 [-0x100000001n, 31, 0x7fffffffn], 164 [-0x100000000n, 31, 0n], 165 [-0xffffffffn, 31, 1n], 166 [-0xfffffffen, 31, 2n], 167 [-0x80000001n, 31, 0x7fffffffn], 168 [-0x80000000n, 31, 0n], 169 [-0x7fffffffn, 31, 1n], 170 [-0x7ffffffen, 31, 2n], 171 [-9n, 31, 0x7ffffff7n], 172 [-8n, 31, 0x7ffffff8n], 173 [-7n, 31, 0x7ffffff9n], 174 [-6n, 31, 0x7ffffffan], 175 [-5n, 31, 0x7ffffffbn], 176 [-4n, 31, 0x7ffffffcn], 177 [-3n, 31, 0x7ffffffdn], 178 [-2n, 31, 0x7ffffffen], 179 [-1n, 31, 0x7fffffffn], 180 [0n, 31, 0n], 181 [1n, 31, 1n], 182 [2n, 31, 2n], 183 [3n, 31, 3n], 184 [4n, 31, 4n], 185 [5n, 31, 5n], 186 [6n, 31, 6n], 187 [7n, 31, 7n], 188 [8n, 31, 8n], 189 [9n, 31, 9n], 190 [0x7ffffffen, 31, 0x7ffffffen], 191 [0x7fffffffn, 31, 0x7fffffffn], 192 [0x80000000n, 31, 0n], 193 [0x80000001n, 31, 1n], 194 [0xfffffffen, 31, 0x7ffffffen], 195 [0xffffffffn, 31, 0x7fffffffn], 196 [0x100000000n, 31, 0n], 197 [0x100000001n, 31, 1n], 198 [0x7ffffffffffffffen, 31, 0x7ffffffen], 199 [0x7fffffffffffffffn, 31, 0x7fffffffn], 200 [0x8000000000000000n, 31, 0n], 201 [0x8000000000000001n, 31, 1n], 202 [0xfffffffffffffffen, 31, 0x7ffffffen], 203 [0xffffffffffffffffn, 31, 0x7fffffffn], 204 [0x10000000000000000n, 31, 0n], 205 [0x10000000000000001n, 31, 1n], 206 [-0x10000000000000001n, 32, 0xffffffffn], 207 [-0x10000000000000000n, 32, 0n], 208 [-0xffffffffffffffffn, 32, 1n], 209 [-0xfffffffffffffffen, 32, 2n], 210 [-0x8000000000000001n, 32, 0xffffffffn], 211 [-0x8000000000000000n, 32, 0n], 212 [-0x7fffffffffffffffn, 32, 1n], 213 [-0x7ffffffffffffffen, 32, 2n], 214 [-0x100000001n, 32, 0xffffffffn], 215 [-0x100000000n, 32, 0n], 216 [-0xffffffffn, 32, 1n], 217 [-0xfffffffen, 32, 2n], 218 [-0x80000001n, 32, 0x7fffffffn], 219 [-0x80000000n, 32, 0x80000000n], 220 [-0x7fffffffn, 32, 0x80000001n], 221 [-0x7ffffffen, 32, 0x80000002n], 222 [-9n, 32, 0xfffffff7n], 223 [-8n, 32, 0xfffffff8n], 224 [-7n, 32, 0xfffffff9n], 225 [-6n, 32, 0xfffffffan], 226 [-5n, 32, 0xfffffffbn], 227 [-4n, 32, 0xfffffffcn], 228 [-3n, 32, 0xfffffffdn], 229 [-2n, 32, 0xfffffffen], 230 [-1n, 32, 0xffffffffn], 231 [0n, 32, 0n], 232 [1n, 32, 1n], 233 [2n, 32, 2n], 234 [3n, 32, 3n], 235 [4n, 32, 4n], 236 [5n, 32, 5n], 237 [6n, 32, 6n], 238 [7n, 32, 7n], 239 [8n, 32, 8n], 240 [9n, 32, 9n], 241 [0x7ffffffen, 32, 0x7ffffffen], 242 [0x7fffffffn, 32, 0x7fffffffn], 243 [0x80000000n, 32, 0x80000000n], 244 [0x80000001n, 32, 0x80000001n], 245 [0xfffffffen, 32, 0xfffffffen], 246 [0xffffffffn, 32, 0xffffffffn], 247 [0x100000000n, 32, 0n], 248 [0x100000001n, 32, 1n], 249 [0x7ffffffffffffffen, 32, 0xfffffffen], 250 [0x7fffffffffffffffn, 32, 0xffffffffn], 251 [0x8000000000000000n, 32, 0n], 252 [0x8000000000000001n, 32, 1n], 253 [0xfffffffffffffffen, 32, 0xfffffffen], 254 [0xffffffffffffffffn, 32, 0xffffffffn], 255 [0x10000000000000000n, 32, 0n], 256 [0x10000000000000001n, 32, 1n], 257 [-0x10000000000000001n, 33, 0x1ffffffffn], 258 [-0x10000000000000000n, 33, 0n], 259 [-0xffffffffffffffffn, 33, 1n], 260 [-0xfffffffffffffffen, 33, 2n], 261 [-0x8000000000000001n, 33, 0x1ffffffffn], 262 [-0x8000000000000000n, 33, 0n], 263 [-0x7fffffffffffffffn, 33, 1n], 264 [-0x7ffffffffffffffen, 33, 2n], 265 [-0x100000001n, 33, 0xffffffffn], 266 [-0x100000000n, 33, 0x100000000n], 267 [-0xffffffffn, 33, 0x100000001n], 268 [-0xfffffffen, 33, 0x100000002n], 269 [-0x80000001n, 33, 0x17fffffffn], 270 [-0x80000000n, 33, 0x180000000n], 271 [-0x7fffffffn, 33, 0x180000001n], 272 [-0x7ffffffen, 33, 0x180000002n], 273 [-9n, 33, 0x1fffffff7n], 274 [-8n, 33, 0x1fffffff8n], 275 [-7n, 33, 0x1fffffff9n], 276 [-6n, 33, 0x1fffffffan], 277 [-5n, 33, 0x1fffffffbn], 278 [-4n, 33, 0x1fffffffcn], 279 [-3n, 33, 0x1fffffffdn], 280 [-2n, 33, 0x1fffffffen], 281 [-1n, 33, 0x1ffffffffn], 282 [0n, 33, 0n], 283 [1n, 33, 1n], 284 [2n, 33, 2n], 285 [3n, 33, 3n], 286 [4n, 33, 4n], 287 [5n, 33, 5n], 288 [6n, 33, 6n], 289 [7n, 33, 7n], 290 [8n, 33, 8n], 291 [9n, 33, 9n], 292 [0x7ffffffen, 33, 0x7ffffffen], 293 [0x7fffffffn, 33, 0x7fffffffn], 294 [0x80000000n, 33, 0x80000000n], 295 [0x80000001n, 33, 0x80000001n], 296 [0xfffffffen, 33, 0xfffffffen], 297 [0xffffffffn, 33, 0xffffffffn], 298 [0x100000000n, 33, 0x100000000n], 299 [0x100000001n, 33, 0x100000001n], 300 [0x7ffffffffffffffen, 33, 0x1fffffffen], 301 [0x7fffffffffffffffn, 33, 0x1ffffffffn], 302 [0x8000000000000000n, 33, 0n], 303 [0x8000000000000001n, 33, 1n], 304 [0xfffffffffffffffen, 33, 0x1fffffffen], 305 [0xffffffffffffffffn, 33, 0x1ffffffffn], 306 [0x10000000000000000n, 33, 0n], 307 [0x10000000000000001n, 33, 1n], 308 [-0x10000000000000001n, 63, 0x7fffffffffffffffn], 309 [-0x10000000000000000n, 63, 0n], 310 [-0xffffffffffffffffn, 63, 1n], 311 [-0xfffffffffffffffen, 63, 2n], 312 [-0x8000000000000001n, 63, 0x7fffffffffffffffn], 313 [-0x8000000000000000n, 63, 0n], 314 [-0x7fffffffffffffffn, 63, 1n], 315 [-0x7ffffffffffffffen, 63, 2n], 316 [-0x100000001n, 63, 0x7ffffffeffffffffn], 317 [-0x100000000n, 63, 0x7fffffff00000000n], 318 [-0xffffffffn, 63, 0x7fffffff00000001n], 319 [-0xfffffffen, 63, 0x7fffffff00000002n], 320 [-0x80000001n, 63, 0x7fffffff7fffffffn], 321 [-0x80000000n, 63, 0x7fffffff80000000n], 322 [-0x7fffffffn, 63, 0x7fffffff80000001n], 323 [-0x7ffffffen, 63, 0x7fffffff80000002n], 324 [-9n, 63, 0x7ffffffffffffff7n], 325 [-8n, 63, 0x7ffffffffffffff8n], 326 [-7n, 63, 0x7ffffffffffffff9n], 327 [-6n, 63, 0x7ffffffffffffffan], 328 [-5n, 63, 0x7ffffffffffffffbn], 329 [-4n, 63, 0x7ffffffffffffffcn], 330 [-3n, 63, 0x7ffffffffffffffdn], 331 [-2n, 63, 0x7ffffffffffffffen], 332 [-1n, 63, 0x7fffffffffffffffn], 333 [0n, 63, 0n], 334 [1n, 63, 1n], 335 [2n, 63, 2n], 336 [3n, 63, 3n], 337 [4n, 63, 4n], 338 [5n, 63, 5n], 339 [6n, 63, 6n], 340 [7n, 63, 7n], 341 [8n, 63, 8n], 342 [9n, 63, 9n], 343 [0x7ffffffen, 63, 0x7ffffffen], 344 [0x7fffffffn, 63, 0x7fffffffn], 345 [0x80000000n, 63, 0x80000000n], 346 [0x80000001n, 63, 0x80000001n], 347 [0xfffffffen, 63, 0xfffffffen], 348 [0xffffffffn, 63, 0xffffffffn], 349 [0x100000000n, 63, 0x100000000n], 350 [0x100000001n, 63, 0x100000001n], 351 [0x7ffffffffffffffen, 63, 0x7ffffffffffffffen], 352 [0x7fffffffffffffffn, 63, 0x7fffffffffffffffn], 353 [0x8000000000000000n, 63, 0n], 354 [0x8000000000000001n, 63, 1n], 355 [0xfffffffffffffffen, 63, 0x7ffffffffffffffen], 356 [0xffffffffffffffffn, 63, 0x7fffffffffffffffn], 357 [0x10000000000000000n, 63, 0n], 358 [0x10000000000000001n, 63, 1n], 359 [-0x10000000000000001n, 64, 0xffffffffffffffffn], 360 [-0x10000000000000000n, 64, 0n], 361 [-0xffffffffffffffffn, 64, 1n], 362 [-0xfffffffffffffffen, 64, 2n], 363 [-0x8000000000000001n, 64, 0x7fffffffffffffffn], 364 [-0x8000000000000000n, 64, 0x8000000000000000n], 365 [-0x7fffffffffffffffn, 64, 0x8000000000000001n], 366 [-0x7ffffffffffffffen, 64, 0x8000000000000002n], 367 [-0x100000001n, 64, 0xfffffffeffffffffn], 368 [-0x100000000n, 64, 0xffffffff00000000n], 369 [-0xffffffffn, 64, 0xffffffff00000001n], 370 [-0xfffffffen, 64, 0xffffffff00000002n], 371 [-0x80000001n, 64, 0xffffffff7fffffffn], 372 [-0x80000000n, 64, 0xffffffff80000000n], 373 [-0x7fffffffn, 64, 0xffffffff80000001n], 374 [-0x7ffffffen, 64, 0xffffffff80000002n], 375 [-9n, 64, 0xfffffffffffffff7n], 376 [-8n, 64, 0xfffffffffffffff8n], 377 [-7n, 64, 0xfffffffffffffff9n], 378 [-6n, 64, 0xfffffffffffffffan], 379 [-5n, 64, 0xfffffffffffffffbn], 380 [-4n, 64, 0xfffffffffffffffcn], 381 [-3n, 64, 0xfffffffffffffffdn], 382 [-2n, 64, 0xfffffffffffffffen], 383 [-1n, 64, 0xffffffffffffffffn], 384 [0n, 64, 0n], 385 [1n, 64, 1n], 386 [2n, 64, 2n], 387 [3n, 64, 3n], 388 [4n, 64, 4n], 389 [5n, 64, 5n], 390 [6n, 64, 6n], 391 [7n, 64, 7n], 392 [8n, 64, 8n], 393 [9n, 64, 9n], 394 [0x7ffffffen, 64, 0x7ffffffen], 395 [0x7fffffffn, 64, 0x7fffffffn], 396 [0x80000000n, 64, 0x80000000n], 397 [0x80000001n, 64, 0x80000001n], 398 [0xfffffffen, 64, 0xfffffffen], 399 [0xffffffffn, 64, 0xffffffffn], 400 [0x100000000n, 64, 0x100000000n], 401 [0x100000001n, 64, 0x100000001n], 402 [0x7ffffffffffffffen, 64, 0x7ffffffffffffffen], 403 [0x7fffffffffffffffn, 64, 0x7fffffffffffffffn], 404 [0x8000000000000000n, 64, 0x8000000000000000n], 405 [0x8000000000000001n, 64, 0x8000000000000001n], 406 [0xfffffffffffffffen, 64, 0xfffffffffffffffen], 407 [0xffffffffffffffffn, 64, 0xffffffffffffffffn], 408 [0x10000000000000000n, 64, 0n], 409 [0x10000000000000001n, 64, 1n], 410 [-0x10000000000000001n, 65, 0xffffffffffffffffn], 411 [-0x10000000000000000n, 65, 0x10000000000000000n], 412 [-0xffffffffffffffffn, 65, 0x10000000000000001n], 413 [-0xfffffffffffffffen, 65, 0x10000000000000002n], 414 [-0x8000000000000001n, 65, 0x17fffffffffffffffn], 415 [-0x8000000000000000n, 65, 0x18000000000000000n], 416 [-0x7fffffffffffffffn, 65, 0x18000000000000001n], 417 [-0x7ffffffffffffffen, 65, 0x18000000000000002n], 418 [-0x100000001n, 65, 0x1fffffffeffffffffn], 419 [-0x100000000n, 65, 0x1ffffffff00000000n], 420 [-0xffffffffn, 65, 0x1ffffffff00000001n], 421 [-0xfffffffen, 65, 0x1ffffffff00000002n], 422 [-0x80000001n, 65, 0x1ffffffff7fffffffn], 423 [-0x80000000n, 65, 0x1ffffffff80000000n], 424 [-0x7fffffffn, 65, 0x1ffffffff80000001n], 425 [-0x7ffffffen, 65, 0x1ffffffff80000002n], 426 [-9n, 65, 0x1fffffffffffffff7n], 427 [-8n, 65, 0x1fffffffffffffff8n], 428 [-7n, 65, 0x1fffffffffffffff9n], 429 [-6n, 65, 0x1fffffffffffffffan], 430 [-5n, 65, 0x1fffffffffffffffbn], 431 [-4n, 65, 0x1fffffffffffffffcn], 432 [-3n, 65, 0x1fffffffffffffffdn], 433 [-2n, 65, 0x1fffffffffffffffen], 434 [-1n, 65, 0x1ffffffffffffffffn], 435 [0n, 65, 0n], 436 [1n, 65, 1n], 437 [2n, 65, 2n], 438 [3n, 65, 3n], 439 [4n, 65, 4n], 440 [5n, 65, 5n], 441 [6n, 65, 6n], 442 [7n, 65, 7n], 443 [8n, 65, 8n], 444 [9n, 65, 9n], 445 [0x7ffffffen, 65, 0x7ffffffen], 446 [0x7fffffffn, 65, 0x7fffffffn], 447 [0x80000000n, 65, 0x80000000n], 448 [0x80000001n, 65, 0x80000001n], 449 [0xfffffffen, 65, 0xfffffffen], 450 [0xffffffffn, 65, 0xffffffffn], 451 [0x100000000n, 65, 0x100000000n], 452 [0x100000001n, 65, 0x100000001n], 453 [0x7ffffffffffffffen, 65, 0x7ffffffffffffffen], 454 [0x7fffffffffffffffn, 65, 0x7fffffffffffffffn], 455 [0x8000000000000000n, 65, 0x8000000000000000n], 456 [0x8000000000000001n, 65, 0x8000000000000001n], 457 [0xfffffffffffffffen, 65, 0xfffffffffffffffen], 458 [0xffffffffffffffffn, 65, 0xffffffffffffffffn], 459 [0x10000000000000000n, 65, 0x10000000000000000n], 460 [0x10000000000000001n, 65, 0x10000000000000001n], 461 ]; 462 463 function f(tests) { 464 for (let test of tests) { 465 let input = test[0], bits = test[1], expected = test[2]; 466 467 assertEq(BigInt.asUintN(bits, input), expected); 468 } 469 } 470 471 for (let i = 0; i < 10; ++i) { 472 f(tests); 473 }