I ran the below in Rhino and got
js> load('/tmp/t')
js: "/tmp/t", line 2: exception from uncaught JavaScript throw: Error:
should fail !== at end of tests
at /tmp/t:2 (assertEquals)
at /tmp/t:85
at <stdin>:8
It's the relevant portions of ExpressionTest with some stubs, and
numeric casts and numeric suffixes removed.
function assertEquals(a, b) {
if (a !== b) { throw new Error(a + ' !== ' + b); }
}
var Operation = {
toInt32: function (n) { return n | 0; },
toUint32: function (n) { return n >>> 0; }
};
var Double = {
POSITIVE_INFINITY: 1 / 0,
NEGATIVE_INFINITY: -1 / 0,
NaN: NaN
};
assertEquals(0, Operation.toInt32(0));
assertEquals(0, Operation.toInt32(-0));
assertEquals(0, Operation.toInt32(Double.POSITIVE_INFINITY));
assertEquals(0, Operation.toInt32(Double.NEGATIVE_INFINITY));
assertEquals(0, Operation.toInt32(Double.NaN));
assertEquals(0, Operation.toInt32(0x100000000));
assertEquals(0, Operation.toInt32(-0x100000000));
assertEquals(0x7fffffff, Operation.toInt32(0x7fffffff));
assertEquals(-0x7fffffff, Operation.toInt32(-0x7fffffff));
assertEquals(-0x80000000, Operation.toInt32(-0x80000000));
assertEquals(-0x80000000, Operation.toInt32(0x80000000));
assertEquals(1, Operation.toInt32(1));
assertEquals(-1, Operation.toInt32(-1));
assertEquals(2, Operation.toInt32(2));
assertEquals(-2, Operation.toInt32(-2));
assertEquals( 1e6, Operation.toInt32(1e6));
assertEquals( 1e7, Operation.toInt32(1e7));
assertEquals( 1e8, Operation.toInt32(1e8));
assertEquals( 1e9, Operation.toInt32(1e9));
assertEquals(1410065408, Operation.toInt32(1e10));
assertEquals(1215752192, Operation.toInt32(1e11));
assertEquals(-727379968, Operation.toInt32(1e12));
assertEquals( -1e6, Operation.toInt32(-1e6));
assertEquals( -1e7, Operation.toInt32(-1e7));
assertEquals( -1e8, Operation.toInt32(-1e8));
assertEquals( -1e9, Operation.toInt32(-1e9));
assertEquals(-1410065408, Operation.toInt32(-1e10));
assertEquals(-1215752192, Operation.toInt32(-1e11));
assertEquals(727379968, Operation.toInt32(-1e12));
assertEquals(0, Operation.toInt32(0.5));
assertEquals(0, Operation.toInt32(-0.5));
assertEquals(1, Operation.toInt32(1.5));
assertEquals(-1, Operation.toInt32(-1.5));
assertEquals(0, Operation.toUint32(0));
assertEquals(0, Operation.toUint32(-0));
assertEquals(0, Operation.toUint32(Double.POSITIVE_INFINITY));
assertEquals(0, Operation.toUint32(Double.NEGATIVE_INFINITY));
assertEquals(0, Operation.toUint32(Double.NaN));
assertEquals(0, Operation.toUint32(0x100000000));
assertEquals(0, Operation.toUint32(-0x100000000));
assertEquals(0x7fffffff, Operation.toUint32(0x7fffffff));
assertEquals(0x80000001, Operation.toUint32(-0x7fffffff));
assertEquals(0x80000000, Operation.toUint32(-0x80000000));
assertEquals(0x80000000, Operation.toUint32(0x80000000));
assertEquals(1, Operation.toUint32(1));
assertEquals(0xffffffff, Operation.toUint32(-1));
assertEquals(2, Operation.toUint32(2));
assertEquals(0xfffffffe, Operation.toUint32(-2));
assertEquals( 1e6, Operation.toUint32(1e6));
assertEquals( 1e7, Operation.toUint32(1e7));
assertEquals( 1e8, Operation.toUint32(1e8));
assertEquals( 1e9, Operation.toUint32(1e9));
assertEquals(1410065408, Operation.toUint32(1e10));
assertEquals(1215752192, Operation.toUint32(1e11));
assertEquals(3567587328, Operation.toUint32(1e12));
assertEquals( (0x100000000 - 1e6), Operation.toUint32(-1e6));
assertEquals( (0x100000000 - 1e7), Operation.toUint32(-1e7));
assertEquals( (0x100000000 - 1e8), Operation.toUint32(-1e8));
assertEquals( (0x100000000 - 1e9), Operation.toUint32(-1e9));
assertEquals(2884901888, Operation.toUint32(-1e10));
assertEquals(3079215104, Operation.toUint32(-1e11));
assertEquals(727379968, Operation.toUint32(-1e12));
assertEquals(0, Operation.toUint32(0.5));
assertEquals(0, Operation.toUint32(-0.5));
assertEquals(1, Operation.toUint32(1.5));
assertEquals(0xffffffff, Operation.toUint32(-1.5));
assertEquals('should fail', 'at end of tests');
http://codereview.appspot.com/157109