@@ -19,6 +19,11 @@ var vm = require('vm');
1919var Buffer = require ( 'safe-buffer' ) . Buffer
2020var objectEntries = require ( 'object.entries' ) ;
2121
22+ // "polyfill" deepStrictEqual on Node 0.12 and below
23+ if ( ! assert . deepStrictEqual ) {
24+ assert . deepStrictEqual = assert . deepEqual ;
25+ }
26+
2227function uncurryThis ( f ) {
2328 return f . call . bind ( f ) ;
2429}
@@ -82,7 +87,7 @@ for (var _i = 0, _arr = [
8287 value : 'foo'
8388 } ) ;
8489 } , 'isUint8Array' ] ,
85- [ function ( ) { return new DataView ( new ArrayBuffer ( 1 ) ) ; } , 'isDataView' ] ,
90+ [ function ( ) { return new DataView ( new ArrayBuffer ( 1 ) , 0 , 1 ) ; } , 'isDataView' ] ,
8691 [ function ( ) { return new SharedArrayBuffer ( ) ; } , 'isSharedArrayBuffer' ] ,
8792 // [ new Proxy({}, {}), 'isProxy' ],
8893 [ function ( ) { return new WebAssembly . Module ( wasmBuffer ) ; } , 'isWebAssemblyCompiledModule' ]
@@ -137,7 +142,9 @@ console.log('Testing', 'isBoxedPrimitive');
137142
138143var SymbolSupported = typeof Symbol !== 'undefined' ;
139144var SymbolToStringTagSupported = SymbolSupported && typeof Symbol . toStringTag !== 'undefined' ;
140- if ( SymbolToStringTagSupported ) {
145+ var isBuggyFirefox = typeof navigator !== 'undefined' && / F i r e f o x \/ \d + / . test ( navigator . userAgent ) &&
146+ parseInt ( navigator . userAgent . split ( 'Firefox/' ) [ 1 ] , 10 ) < 66
147+ if ( SymbolToStringTagSupported && ! isBuggyFirefox ) {
141148 [
142149 'Uint8Array' ,
143150 'Uint8ClampedArray' ,
@@ -164,13 +171,19 @@ if (SymbolToStringTagSupported) {
164171 assert ( types [ method ] ( array ) ) ;
165172 } ) ;
166173}
174+ if ( isBuggyFirefox ) {
175+ console . log ( 'skipping fake typed array tests because they do not work in FF' )
176+ }
167177
178+ // Old Node.js had a fully custom Buffer implementation, newer are based on ArrayBuffer
179+ // This is important for the ArrayBuffer and typed array tests
180+ var isBufferBasedOnArrayBuffer = Buffer . alloc ( 1 ) . buffer !== undefined ;
168181{
169182 var primitive = function primitive ( ) { return true ; } ;
170183 var arrayBuffer = function arrayBuffer ( ) { return new ArrayBuffer ( 1 ) ; } ;
171184
172185 var buffer = function buffer ( ) { return Buffer . from ( arrayBuffer ( ) ) ; } ;
173- var dataView = function dataView ( ) { return new DataView ( arrayBuffer ( ) ) ; } ;
186+ var dataView = function dataView ( ) { return new DataView ( arrayBuffer ( ) , 0 , 1 ) ; } ;
174187 var uint8Array = function uint8Array ( ) { return new Uint8Array ( arrayBuffer ( ) ) ; } ;
175188 var uint8ClampedArray = function uint8ClampedArray ( ) { return new Uint8ClampedArray ( arrayBuffer ( ) ) ; } ;
176189 var uint16Array = function uint16Array ( ) { return new Uint16Array ( arrayBuffer ( ) ) ; } ;
@@ -208,7 +221,7 @@ if (SymbolToStringTagSupported) {
208221 var fakeBigUint64Array = function fakeBigUint64Array ( ) { return Object . create ( BigUint64Array . prototype ) ; } ;
209222
210223 var stealthyDataView = function stealthyDataView ( ) {
211- return Object . setPrototypeOf ( new DataView ( arrayBuffer ( ) ) , Uint8Array . prototype ) ;
224+ return Object . setPrototypeOf ( new DataView ( arrayBuffer ( ) , 0 , 1 ) , Uint8Array . prototype ) ;
212225 } ;
213226 var stealthyUint8Array = function stealthyUint8Array ( ) {
214227 return Object . setPrototypeOf ( new Uint8Array ( arrayBuffer ( ) ) , ArrayBuffer . prototype ) ;
@@ -384,7 +397,7 @@ if (SymbolToStringTagSupported) {
384397
385398 var expected = {
386399 isArrayBufferView : [
387- buffer ,
400+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
388401 dataView ,
389402 stealthyDataView ,
390403 uint8Array ,
@@ -411,7 +424,7 @@ if (SymbolToStringTagSupported) {
411424 stealthyBigUint64Array
412425 ] ,
413426 isTypedArray : [
414- buffer ,
427+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
415428 uint8Array ,
416429 stealthyUint8Array ,
417430 uint8ClampedArray ,
@@ -436,7 +449,7 @@ if (SymbolToStringTagSupported) {
436449 stealthyBigUint64Array
437450 ] ,
438451 isUint8Array : [
439- buffer ,
452+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
440453 uint8Array ,
441454 stealthyUint8Array
442455 ] ,
0 commit comments