48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
/**
|
|
* @fileoverview Tests for uint8arrays.js.
|
|
*/
|
|
goog.module('protobuf.binary.Uint8ArraysTest');
|
|
|
|
goog.setTestOnly();
|
|
|
|
const {concatenateByteArrays} = goog.require('protobuf.binary.uint8arrays');
|
|
|
|
describe('concatenateByteArrays does', () => {
|
|
it('concatenate empty array', () => {
|
|
const byteArrays = [];
|
|
expect(concatenateByteArrays(byteArrays)).toEqual(new Uint8Array(0));
|
|
});
|
|
|
|
it('concatenate Uint8Arrays', () => {
|
|
const byteArrays = [new Uint8Array([0x01]), new Uint8Array([0x02])];
|
|
expect(concatenateByteArrays(byteArrays)).toEqual(new Uint8Array([
|
|
0x01, 0x02
|
|
]));
|
|
});
|
|
|
|
it('concatenate array of bytes', () => {
|
|
const byteArrays = [[0x01], [0x02]];
|
|
expect(concatenateByteArrays(byteArrays)).toEqual(new Uint8Array([
|
|
0x01, 0x02
|
|
]));
|
|
});
|
|
|
|
it('concatenate array of non-bytes', () => {
|
|
// Note in unchecked mode we produce invalid output for invalid inputs.
|
|
// This test just documents our behavior in those cases.
|
|
// These values might change at any point and are not considered
|
|
// what the implementation should be doing here.
|
|
const byteArrays = [[40.0], [256]];
|
|
expect(concatenateByteArrays(byteArrays)).toEqual(new Uint8Array([
|
|
0x28, 0x00
|
|
]));
|
|
});
|
|
|
|
it('throw for null array', () => {
|
|
expect(
|
|
() => concatenateByteArrays(
|
|
/** @type {!Array<!Uint8Array>} */ (/** @type {*} */ (null))))
|
|
.toThrow();
|
|
});
|
|
});
|