| // Undefined and NaN end up as zero after ToUint32 |
| assertEq(Math.clz32(), 32); |
| assertEq(Math.clz32(NaN), 32); |
| assertEq(Math.clz32.call(), 32); |
| // 0 |
| assertEq(Math.clz32(null), 32); |
| assertEq(Math.clz32(false), 32); |
| // 1 |
| assertEq(Math.clz32(true), 31); |
| // 3 |
| assertEq(Math.clz32(3.5), 30); |
| // NaN -> 0 |
| assertEq(Math.clz32({}), 32); |
| // 2 |
| assertEq(Math.clz32({valueOf: function() { return 2; }}), 30); |
| // 0 -> 0 |
| assertEq(Math.clz32([]), 32); |
| assertEq(Math.clz32(""), 32); |
| // NaN -> 0 |
| assertEq(Math.clz32([1, 2, 3]), 32); |
| assertEq(Math.clz32("bar"), 32); |
| // 15 |
| assertEq(Math.clz32("15"), 28); |
| |
| |
| assertEq(Math.clz32(0x80000000), 0); |
| assertEq(Math.clz32(0xF0FF1000), 0); |
| assertEq(Math.clz32(0x7F8F0001), 1); |
| assertEq(Math.clz32(0x3FFF0100), 2); |
| assertEq(Math.clz32(0x1FF50010), 3); |
| assertEq(Math.clz32(0x00800000), 8); |
| assertEq(Math.clz32(0x00400000), 9); |
| assertEq(Math.clz32(0x00008000), 16); |
| assertEq(Math.clz32(0x00004000), 17); |
| assertEq(Math.clz32(0x00000080), 24); |
| assertEq(Math.clz32(0x00000040), 25); |
| assertEq(Math.clz32(0x00000001), 31); |
| assertEq(Math.clz32(0), 32); |
| |
| reportCompare(0, 0, 'ok'); |