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