Skip to content

Commit e706601

Browse files
STREAMS-1984: Add NumberInt to global scope for JS Engine (#21)
1 parent a991338 commit e706601

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

snippets/mongocompat/mongotypes.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,10 +487,16 @@ Object.defineProperty(NumberLong.prototype, 'exactValueString', {
487487
if (!NumberInt.prototype) {
488488
NumberInt.prototype = {};
489489
}
490-
490+
NumberInt.prototype.nativeToString = NumberInt.prototype.toString;
491+
NumberInt.prototype.toString = function() {
492+
return `NumberInt(${this.valueOf()})`;
493+
};
491494
NumberInt.prototype.tojson = function() {
492495
return this.toString();
493496
};
497+
NumberInt.prototype.toNumber = function() {
498+
return this.valueOf();
499+
};
494500

495501
// NumberDecimal
496502
if (typeof NumberDecimal !== 'undefined') {

snippets/mongocompat/test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,24 @@ assert.strictEqual(NumberLong(2147483647).toString(), 'NumberLong(2147483647)');
88
assert.strictEqual(NumberLong("2147483648").toString(), 'NumberLong("2147483648")');
99
assert.strictEqual(NumberLong(-2147483648).toString(), 'NumberLong(-2147483648)');
1010
assert.strictEqual(NumberLong(-2147483649).toString(), 'NumberLong("-2147483649")');
11+
12+
const int1 = NumberInt(42);
13+
assert.strictEqual(int1.toString(), 'NumberInt(42)');
14+
assert.strictEqual(int1.tojson(), 'NumberInt(42)');
15+
assert.strictEqual(int1.toNumber(), 42);
16+
assert.strictEqual(int1.valueOf(), 42);
17+
assert.strictEqual(int1.toJSON(), 42);
18+
const int2 = NumberInt(-100);
19+
assert.strictEqual(int2.toString(), 'NumberInt(-100)');
20+
assert.strictEqual(int2.tojson(), 'NumberInt(-100)');
21+
assert.strictEqual(int2.toNumber(), -100);
22+
const maxInt32 = NumberInt(2147483647);
23+
assert.strictEqual(maxInt32.toString(), 'NumberInt(2147483647)');
24+
assert.strictEqual(maxInt32.toNumber(), 2147483647);
25+
const minInt32 = NumberInt(-2147483648);
26+
assert.strictEqual(minInt32.toString(), 'NumberInt(-2147483648)');
27+
assert.strictEqual(minInt32.toNumber(), -2147483648);
28+
1129
assert.strictEqual(NumberLong(9223372036854775807).toString(), 'NumberLong("9223372036854775807")');
1230
assert.strictEqual(NumberLong(-9223372036854775808).toString(), 'NumberLong("-9223372036854775808")');
1331
const maxLong = NumberLong(9223372036854775807, 2147483647, -1);

0 commit comments

Comments
 (0)