You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					194 lines
				
				4.3 KiB
			
		
		
			
		
	
	
					194 lines
				
				4.3 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
							 | 
						||
| 
								 | 
							
								var B = require('../').Buffer
							 | 
						||
| 
								 | 
							
								var test = require('tape')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from array', function (t) {
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    new B([1, 2, 3]).toString(),
							 | 
						||
| 
								 | 
							
								    '\u0001\u0002\u0003'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from array w/ negatives', function (t) {
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    new B([-1, -2, -3]).toString('hex'),
							 | 
						||
| 
								 | 
							
								    'fffefd'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from array with mixed signed input', function (t) {
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'),
							 | 
						||
| 
								 | 
							
								    '01ff80800000ff01'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from string', function (t) {
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    new B('hey', 'utf8').toString(),
							 | 
						||
| 
								 | 
							
								    'hey'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from buffer', function (t) {
							 | 
						||
| 
								 | 
							
								  var b1 = new B('asdf')
							 | 
						||
| 
								 | 
							
								  var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								  t.equal(b1.toString('hex'), b2.toString('hex'))
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from ArrayBuffer', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof ArrayBuffer !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var arraybuffer = new Uint8Array([0, 1, 2, 3]).buffer
							 | 
						||
| 
								 | 
							
								    var b = new B(arraybuffer)
							 | 
						||
| 
								 | 
							
								    t.equal(b.length, 4)
							 | 
						||
| 
								 | 
							
								    t.equal(b[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from ArrayBuffer, shares memory', function (t) {
							 | 
						||
| 
								 | 
							
								  if (Buffer.TYPED_ARRAY_SUPPORT) {
							 | 
						||
| 
								 | 
							
								    var u = new Uint8Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var arraybuffer = u.buffer
							 | 
						||
| 
								 | 
							
								    var b = new B(arraybuffer)
							 | 
						||
| 
								 | 
							
								    t.equal(b.length, 4)
							 | 
						||
| 
								 | 
							
								    t.equal(b[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b[4], undefined)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // changing the Uint8Array (and thus the ArrayBuffer), changes the Buffer
							 | 
						||
| 
								 | 
							
								    u[0] = 10
							 | 
						||
| 
								 | 
							
								    t.equal(b[0], 10)
							 | 
						||
| 
								 | 
							
								    u[1] = 11
							 | 
						||
| 
								 | 
							
								    t.equal(b[1], 11)
							 | 
						||
| 
								 | 
							
								    u[2] = 12
							 | 
						||
| 
								 | 
							
								    t.equal(b[2], 12)
							 | 
						||
| 
								 | 
							
								    u[3] = 13
							 | 
						||
| 
								 | 
							
								    t.equal(b[3], 13)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Uint8Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Uint8Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Uint8Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Uint16Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Uint16Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Uint16Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Uint32Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Uint32Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Uint32Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Int16Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Int16Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Int16Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Int32Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Int32Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Int32Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Float32Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Float32Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Float32Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from Float64Array', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof Float64Array !== 'undefined') {
							 | 
						||
| 
								 | 
							
								    var b1 = new Float64Array([0, 1, 2, 3])
							 | 
						||
| 
								 | 
							
								    var b2 = new B(b1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1.length, b2.length)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[0], 0)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[1], 1)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[2], 2)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[3], 3)
							 | 
						||
| 
								 | 
							
								    t.equal(b1[4], undefined)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('new buffer from buffer.toJSON() output', function (t) {
							 | 
						||
| 
								 | 
							
								  if (typeof JSON === 'undefined') {
							 | 
						||
| 
								 | 
							
								    // ie6, ie7 lack support
							 | 
						||
| 
								 | 
							
								    t.end()
							 | 
						||
| 
								 | 
							
								    return
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var buf = new B('test')
							 | 
						||
| 
								 | 
							
								  var json = JSON.stringify(buf)
							 | 
						||
| 
								 | 
							
								  var obj = JSON.parse(json)
							 | 
						||
| 
								 | 
							
								  var copy = new B(obj)
							 | 
						||
| 
								 | 
							
								  t.ok(buf.equals(copy))
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 |