diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js new file mode 100644 index 00000000000000..e982cf9eb092fd --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-ascii.js @@ -0,0 +1,23 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// v8 fails silently if string length > v8::String::kMaxLength +// v8::String::kMaxLength defined in v8.h +const kStringMaxLength = process.binding('buffer').kStringMaxLength; + +try { + new Buffer(kStringMaxLength * 3); +} catch(e) { + assert.equal(e.message, 'Invalid array buffer length'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; +} + +const buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('ascii'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js new file mode 100644 index 00000000000000..43a3358759e249 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-base64.js @@ -0,0 +1,23 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// v8 fails silently if string length > v8::String::kMaxLength +// v8::String::kMaxLength defined in v8.h +const kStringMaxLength = process.binding('buffer').kStringMaxLength; + +try { + new Buffer(kStringMaxLength * 3); +} catch(e) { + assert.equal(e.message, 'Invalid array buffer length'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; +} + +const buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('base64'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js similarity index 54% rename from test/parallel/test-stringbytes-external-exceed-max-by-1.js rename to test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js index 8e2a5bf01f2596..9d0d2c3e897057 100644 --- a/test/parallel/test-stringbytes-external-exceed-max-by-1.js +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-binary.js @@ -16,37 +16,16 @@ try { return; } -const buf1 = new Buffer(kStringMaxLength + 1); +const buf = new Buffer(kStringMaxLength + 1); assert.throws(function() { - buf1.toString(); -}, /toString failed|Invalid array buffer length/); - -assert.throws(function() { - buf1.toString('ascii'); -}, /toString failed/); - -assert.throws(function() { - buf1.toString('utf8'); + buf.toString('binary'); }, /toString failed/); -assert.throws(function() { - buf1.toString('binary'); -}, /toString failed/); - -assert.throws(function() { - buf1.toString('base64'); -}, /toString failed/); - -assert.throws(function() { - buf1.toString('hex'); -}, /toString failed/); - -var maxString = buf1.toString('binary', 1); +var maxString = buf.toString('binary', 1); assert.equal(maxString.length, kStringMaxLength); +// Free the memory early instead of at the end of the next assignment maxString = undefined; -maxString = buf1.toString('binary', 0, kStringMaxLength); +maxString = buf.toString('binary', 0, kStringMaxLength); assert.equal(maxString.length, kStringMaxLength); -// Free the memory early instead of at the end of the next assignment -maxString = undefined; diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js new file mode 100644 index 00000000000000..2937b4aab85813 --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-hex.js @@ -0,0 +1,23 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// v8 fails silently if string length > v8::String::kMaxLength +// v8::String::kMaxLength defined in v8.h +const kStringMaxLength = process.binding('buffer').kStringMaxLength; + +try { + new Buffer(kStringMaxLength * 3); +} catch(e) { + assert.equal(e.message, 'Invalid array buffer length'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; +} + +const buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString('hex'); +}, /toString failed/); diff --git a/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js b/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js new file mode 100644 index 00000000000000..ee297a880dacbd --- /dev/null +++ b/test/parallel/test-stringbytes-external-exceed-max-by-1-utf8.js @@ -0,0 +1,27 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); + +// v8 fails silently if string length > v8::String::kMaxLength +// v8::String::kMaxLength defined in v8.h +const kStringMaxLength = process.binding('buffer').kStringMaxLength; + +try { + new Buffer(kStringMaxLength * 3); +} catch(e) { + assert.equal(e.message, 'Invalid array buffer length'); + console.log( + '1..0 # Skipped: intensive toString tests due to memory confinements'); + return; +} + +const buf = new Buffer(kStringMaxLength + 1); + +assert.throws(function() { + buf.toString(); +}, /toString failed|Invalid array buffer length/); + +assert.throws(function() { + buf.toString('utf8'); +}, /toString failed/);