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.
		
		
		
		
			
				
					128 lines
				
				2.8 KiB
			
		
		
			
		
	
	
					128 lines
				
				2.8 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
							 | 
						||
| 
								 | 
							
								var B = require('../').Buffer
							 | 
						||
| 
								 | 
							
								var test = require('tape')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('buffer.toJSON', function (t) {
							 | 
						||
| 
								 | 
							
								  var data = [1, 2, 3, 4]
							 | 
						||
| 
								 | 
							
								  t.deepEqual(
							 | 
						||
| 
								 | 
							
								    new B(data).toJSON(),
							 | 
						||
| 
								 | 
							
								    { type: 'Buffer', data: [ 1, 2, 3, 4 ] }
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('buffer.copy', function (t) {
							 | 
						||
| 
								 | 
							
								  // copied from nodejs.org example
							 | 
						||
| 
								 | 
							
								  var buf1 = new B(26)
							 | 
						||
| 
								 | 
							
								  var buf2 = new B(26)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < 26; i++) {
							 | 
						||
| 
								 | 
							
								    buf1[i] = i + 97 // 97 is ASCII a
							 | 
						||
| 
								 | 
							
								    buf2[i] = 33 // ASCII !
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  buf1.copy(buf2, 8, 16, 20)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    buf2.toString('ascii', 0, 25),
							 | 
						||
| 
								 | 
							
								    '!!!!!!!!qrst!!!!!!!!!!!!!'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('test offset returns are correct', function (t) {
							 | 
						||
| 
								 | 
							
								  var b = new B(16)
							 | 
						||
| 
								 | 
							
								  t.equal(4, b.writeUInt32LE(0, 0))
							 | 
						||
| 
								 | 
							
								  t.equal(6, b.writeUInt16LE(0, 4))
							 | 
						||
| 
								 | 
							
								  t.equal(7, b.writeUInt8(0, 6))
							 | 
						||
| 
								 | 
							
								  t.equal(8, b.writeInt8(0, 7))
							 | 
						||
| 
								 | 
							
								  t.equal(16, b.writeDoubleLE(0, 8))
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('concat() a varying number of buffers', function (t) {
							 | 
						||
| 
								 | 
							
								  var zero = []
							 | 
						||
| 
								 | 
							
								  var one = [ new B('asdf') ]
							 | 
						||
| 
								 | 
							
								  var long = []
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < 10; i++) {
							 | 
						||
| 
								 | 
							
								    long.push(new B('asdf'))
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var flatZero = B.concat(zero)
							 | 
						||
| 
								 | 
							
								  var flatOne = B.concat(one)
							 | 
						||
| 
								 | 
							
								  var flatLong = B.concat(long)
							 | 
						||
| 
								 | 
							
								  var flatLongLen = B.concat(long, 40)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.equal(flatZero.length, 0)
							 | 
						||
| 
								 | 
							
								  t.equal(flatOne.toString(), 'asdf')
							 | 
						||
| 
								 | 
							
								  t.deepEqual(flatOne, one[0])
							 | 
						||
| 
								 | 
							
								  t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf')))
							 | 
						||
| 
								 | 
							
								  t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf')))
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fill', function (t) {
							 | 
						||
| 
								 | 
							
								  var b = new B(10)
							 | 
						||
| 
								 | 
							
								  b.fill(2)
							 | 
						||
| 
								 | 
							
								  t.equal(b.toString('hex'), '02020202020202020202')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('fill (string)', function (t) {
							 | 
						||
| 
								 | 
							
								  var b = new B(10)
							 | 
						||
| 
								 | 
							
								  b.fill('abc')
							 | 
						||
| 
								 | 
							
								  t.equal(b.toString(), 'abcabcabca')
							 | 
						||
| 
								 | 
							
								  b.fill('է')
							 | 
						||
| 
								 | 
							
								  t.equal(b.toString(), 'էէէէէ')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('copy() empty buffer with sourceEnd=0', function (t) {
							 | 
						||
| 
								 | 
							
								  var source = new B([42])
							 | 
						||
| 
								 | 
							
								  var destination = new B([43])
							 | 
						||
| 
								 | 
							
								  source.copy(destination, 0, 0, 0)
							 | 
						||
| 
								 | 
							
								  t.equal(destination.readUInt8(0), 43)
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('copy() after slice()', function (t) {
							 | 
						||
| 
								 | 
							
								  var source = new B(200)
							 | 
						||
| 
								 | 
							
								  var dest = new B(200)
							 | 
						||
| 
								 | 
							
								  var expected = new B(200)
							 | 
						||
| 
								 | 
							
								  for (var i = 0; i < 200; i++) {
							 | 
						||
| 
								 | 
							
								    source[i] = i
							 | 
						||
| 
								 | 
							
								    dest[i] = 0
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  source.slice(2).copy(dest)
							 | 
						||
| 
								 | 
							
								  source.copy(expected, 0, 2)
							 | 
						||
| 
								 | 
							
								  t.deepEqual(dest, expected)
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('copy() ascending', function (t) {
							 | 
						||
| 
								 | 
							
								  var b = new B('abcdefghij')
							 | 
						||
| 
								 | 
							
								  b.copy(b, 0, 3, 10)
							 | 
						||
| 
								 | 
							
								  t.equal(b.toString(), 'defghijhij')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('copy() descending', function (t) {
							 | 
						||
| 
								 | 
							
								  var b = new B('abcdefghij')
							 | 
						||
| 
								 | 
							
								  b.copy(b, 3, 0, 7)
							 | 
						||
| 
								 | 
							
								  t.equal(b.toString(), 'abcabcdefg')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('buffer.slice sets indexes', function (t) {
							 | 
						||
| 
								 | 
							
								  t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('buffer.slice out of range', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(2)
							 | 
						||
| 
								 | 
							
								  t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo')
							 | 
						||
| 
								 | 
							
								  t.equal((new B('hallo')).slice(10, 2).toString(), '')
							 | 
						||
| 
								 | 
							
								  t.end()
							 | 
						||
| 
								 | 
							
								})
							 |