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.
 
 
 
 

197 lines
5.2 KiB

const {EncodeStream} = require('../');
const should = require('chai').should();
const concat = require('concat-stream');
describe('EncodeStream', function() {
it('should write a buffer', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([1,2,3]));
return done();
})
);
stream.writeBuffer(Buffer.from([1,2,3]));
return stream.end();
});
it('should writeUInt16BE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0xab, 0xcd]));
return done();
})
);
stream.writeUInt16BE(0xabcd);
return stream.end();
});
it('should writeUInt16LE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0xab, 0xcd]));
return done();
})
);
stream.writeUInt16LE(0xcdab);
return stream.end();
});
it('should writeUInt24BE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0xab, 0xcd, 0xef]));
return done();
})
);
stream.writeUInt24BE(0xabcdef);
return stream.end();
});
it('should writeUInt24LE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0xef, 0xcd, 0xab]));
return done();
})
);
stream.writeUInt24LE(0xabcdef);
return stream.end();
});
it('should writeInt24BE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0xff, 0xab, 0x24, 0xab, 0xcd, 0xef]));
return done();
})
);
stream.writeInt24BE(-21724);
stream.writeInt24BE(0xabcdef);
return stream.end();
});
it('should writeInt24LE', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([0x24, 0xab, 0xff, 0xef, 0xcd, 0xab]));
return done();
})
);
stream.writeInt24LE(-21724);
stream.writeInt24LE(0xabcdef);
return stream.end();
});
it('should fill', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from([10, 10, 10, 10, 10]));
return done();
})
);
stream.fill(10, 5);
return stream.end();
});
return describe('writeString', function() {
it('should encode ascii by default', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from('some text', 'ascii'));
return done();
})
);
stream.writeString('some text');
return stream.end();
});
it('should encode ascii', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from('some text', 'ascii'));
return done();
})
);
stream.writeString('some text');
return stream.end();
});
it('should encode utf8', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from('unicode! 👍', 'utf8'));
return done();
})
);
stream.writeString('unicode! 👍', 'utf8');
return stream.end();
});
it('should encode utf16le', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from('unicode! 👍', 'utf16le'));
return done();
})
);
stream.writeString('unicode! 👍', 'utf16le');
return stream.end();
});
it('should encode ucs2', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(buf) {
buf.should.deep.equal(Buffer.from('unicode! 👍', 'ucs2'));
return done();
})
);
stream.writeString('unicode! 👍', 'ucs2');
return stream.end();
});
it('should encode utf16be', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(out) {
const buf = Buffer.from('unicode! 👍', 'utf16le');
for (let i = 0, end = buf.length - 1; i < end; i += 2) {
const byte = buf[i];
buf[i] = buf[i + 1];
buf[i + 1] = byte;
}
out.should.deep.equal(buf);
return done();
})
);
stream.writeString('unicode! 👍', 'utf16be');
return stream.end();
});
return it('should encode macroman', function(done) {
const stream = new EncodeStream;
stream.pipe(concat(function(out) {
const buf = Buffer.from([0x8a, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x63, 0x68, 0x87, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73]);
out.should.deep.equal(buf);
return done();
})
);
stream.writeString('äccented cháracters', 'mac');
return stream.end();
});
});
});