91 lines
2.4 KiB
TypeScript
91 lines
2.4 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
|
||
|
import * as Bytes from '../../Bytes';
|
||
|
|
||
|
describe('Bytes', () => {
|
||
|
it('converts to base64 and back', () => {
|
||
|
const bytes = new Uint8Array([1, 2, 3]);
|
||
|
|
||
|
const base64 = Bytes.toBase64(bytes);
|
||
|
assert.strictEqual(base64, 'AQID');
|
||
|
|
||
|
assert.deepEqual(Bytes.fromBase64(base64), bytes);
|
||
|
});
|
||
|
|
||
|
it('converts to hex and back', () => {
|
||
|
const bytes = new Uint8Array([1, 2, 3]);
|
||
|
|
||
|
const hex = Bytes.toHex(bytes);
|
||
|
assert.strictEqual(hex, '010203');
|
||
|
|
||
|
assert.deepEqual(Bytes.fromHex(hex), bytes);
|
||
|
});
|
||
|
|
||
|
it('converts to string and back', () => {
|
||
|
const bytes = new Uint8Array([0x61, 0x62, 0x63]);
|
||
|
|
||
|
const binary = Bytes.toString(bytes);
|
||
|
assert.strictEqual(binary, 'abc');
|
||
|
|
||
|
assert.deepEqual(Bytes.fromString(binary), bytes);
|
||
|
});
|
||
|
|
||
|
it('converts to binary and back', () => {
|
||
|
const bytes = new Uint8Array([0xff, 0x01]);
|
||
|
|
||
|
const binary = Bytes.toBinary(bytes);
|
||
|
assert.strictEqual(binary, '\xff\x01');
|
||
|
|
||
|
assert.deepEqual(Bytes.fromBinary(binary), bytes);
|
||
|
});
|
||
|
|
||
|
it('concatenates bytes', () => {
|
||
|
const result = Bytes.concatenate([
|
||
|
Bytes.fromString('hello'),
|
||
|
Bytes.fromString(' '),
|
||
|
Bytes.fromString('world'),
|
||
|
]);
|
||
|
|
||
|
assert.strictEqual(Bytes.toString(result), 'hello world');
|
||
|
});
|
||
|
|
||
|
describe('isEmpty', () => {
|
||
|
it('returns true for `undefined`', () => {
|
||
|
assert.strictEqual(Bytes.isEmpty(undefined), true);
|
||
|
});
|
||
|
|
||
|
it('returns true for `null`', () => {
|
||
|
assert.strictEqual(Bytes.isEmpty(null), true);
|
||
|
});
|
||
|
|
||
|
it('returns true for an empty Uint8Array', () => {
|
||
|
assert.strictEqual(Bytes.isEmpty(new Uint8Array(0)), true);
|
||
|
});
|
||
|
|
||
|
it('returns false for not empty Uint8Array', () => {
|
||
|
assert.strictEqual(Bytes.isEmpty(new Uint8Array(123)), false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('isNotEmpty', () => {
|
||
|
it('returns false for `undefined`', () => {
|
||
|
assert.strictEqual(Bytes.isNotEmpty(undefined), false);
|
||
|
});
|
||
|
|
||
|
it('returns false for `null`', () => {
|
||
|
assert.strictEqual(Bytes.isNotEmpty(null), false);
|
||
|
});
|
||
|
|
||
|
it('returns false for an empty Uint8Array', () => {
|
||
|
assert.strictEqual(Bytes.isNotEmpty(new Uint8Array(0)), false);
|
||
|
});
|
||
|
|
||
|
it('returns true for not empty Uint8Array', () => {
|
||
|
assert.strictEqual(Bytes.isNotEmpty(new Uint8Array(123)), true);
|
||
|
});
|
||
|
});
|
||
|
});
|