2
2
var common = require ( '../common' ) ;
3
3
var assert = require ( 'assert' ) ;
4
4
var util = require ( 'util' ) ;
5
+ const vm = require ( 'vm' ) ;
5
6
6
7
assert . equal ( util . inspect ( 1 ) , '1' ) ;
7
8
assert . equal ( util . inspect ( false ) , 'false' ) ;
@@ -68,6 +69,35 @@ for (const showHidden of [true, false]) {
68
69
' y: 1337 }' ) ;
69
70
}
70
71
72
+ // Now do the same checks but from a different context
73
+ for ( const showHidden of [ true , false ] ) {
74
+ const ab = vm . runInNewContext ( 'new ArrayBuffer(4)' ) ;
75
+ const dv = vm . runInNewContext ( 'new DataView(ab, 1, 2)' , { ab : ab } ) ;
76
+ assert . equal ( util . inspect ( ab , showHidden ) , 'ArrayBuffer { byteLength: 4 }' ) ;
77
+ assert . equal ( util . inspect ( new DataView ( ab , 1 , 2 ) , showHidden ) ,
78
+ 'DataView {\n' +
79
+ ' byteLength: 2,\n' +
80
+ ' byteOffset: 1,\n' +
81
+ ' buffer: ArrayBuffer { byteLength: 4 } }' ) ;
82
+ assert . equal ( util . inspect ( ab , showHidden ) , 'ArrayBuffer { byteLength: 4 }' ) ;
83
+ assert . equal ( util . inspect ( dv , showHidden ) ,
84
+ 'DataView {\n' +
85
+ ' byteLength: 2,\n' +
86
+ ' byteOffset: 1,\n' +
87
+ ' buffer: ArrayBuffer { byteLength: 4 } }' ) ;
88
+ ab . x = 42 ;
89
+ dv . y = 1337 ;
90
+ assert . equal ( util . inspect ( ab , showHidden ) ,
91
+ 'ArrayBuffer { byteLength: 4, x: 42 }' ) ;
92
+ assert . equal ( util . inspect ( dv , showHidden ) ,
93
+ 'DataView {\n' +
94
+ ' byteLength: 2,\n' +
95
+ ' byteOffset: 1,\n' +
96
+ ' buffer: ArrayBuffer { byteLength: 4, x: 42 },\n' +
97
+ ' y: 1337 }' ) ;
98
+ }
99
+
100
+
71
101
[ Float32Array ,
72
102
Float64Array ,
73
103
Int16Array ,
@@ -94,6 +124,38 @@ for (const showHidden of [true, false]) {
94
124
assert . equal ( util . inspect ( array , false ) , `${ constructor . name } [ 65, 97 ]` ) ;
95
125
} ) ;
96
126
127
+ // Now check that declaring a TypedArray in a different context works the same
128
+ [ Float32Array ,
129
+ Float64Array ,
130
+ Int16Array ,
131
+ Int32Array ,
132
+ Int8Array ,
133
+ Uint16Array ,
134
+ Uint32Array ,
135
+ Uint8Array ,
136
+ Uint8ClampedArray ] . forEach ( constructor => {
137
+ const length = 2 ;
138
+ const byteLength = length * constructor . BYTES_PER_ELEMENT ;
139
+ const array = vm . runInNewContext ( 'new constructor(new ArrayBuffer(' +
140
+ 'byteLength), 0, length)' ,
141
+ { constructor : constructor ,
142
+ byteLength : byteLength ,
143
+ length : length
144
+ } ) ;
145
+ array [ 0 ] = 65 ;
146
+ array [ 1 ] = 97 ;
147
+ assert . equal ( util . inspect ( array , true ) ,
148
+ `${ constructor . name } [\n` +
149
+ ` 65,\n` +
150
+ ` 97,\n` +
151
+ ` [BYTES_PER_ELEMENT]: ${ constructor . BYTES_PER_ELEMENT } ,\n` +
152
+ ` [length]: ${ length } ,\n` +
153
+ ` [byteLength]: ${ byteLength } ,\n` +
154
+ ` [byteOffset]: 0,\n` +
155
+ ` [buffer]: ArrayBuffer { byteLength: ${ byteLength } } ]` ) ;
156
+ assert . equal ( util . inspect ( array , false ) , `${ constructor . name } [ 65, 97 ]` ) ;
157
+ } ) ;
158
+
97
159
// Due to the hash seed randomization it's not deterministic the order that
98
160
// the following ways this hash is displayed.
99
161
// See http://codereview.chromium.org/9124004/
0 commit comments