| /* Copyright 2017 Google Inc. All Rights Reserved. | |
| Distributed under MIT license. | |
| See file LICENSE for detail or copy at https://opensource.org/licenses/MIT | |
| */ | |
| import {BrotliDecode} from "./decode.js"; | |
| /** | |
| * @param {!Int8Array} bytes | |
| * @return {string} | |
| */ | |
| function bytesToString(bytes) { | |
| return String.fromCharCode.apply(null, new Uint16Array(bytes)); | |
| } | |
| /** | |
| * @param {string} str | |
| * @return {!Int8Array} | |
| */ | |
| function stringToBytes(str) { | |
| let out = new Int8Array(str.length); | |
| for (let i = 0; i < str.length; ++i) out[i] = str.charCodeAt(i); | |
| return out; | |
| } | |
| describe('DecodeTest', () => { | |
| it('testMetadata', () => { | |
| expect('').toEqual( | |
| bytesToString(BrotliDecode(Int8Array.from([1, 11, 0, 42, 3])))); | |
| }); | |
| it('testCompoundDictionary', () => { | |
| const txt = 'kot lomom kolol slona\n'; | |
| const dictionary = stringToBytes(txt); | |
| const compressed = | |
| [0xa1, 0xa8, 0x00, 0xc0, 0x2f, 0x01, 0x10, 0xc4, 0x44, 0x09, 0x00]; | |
| expect(txt.length).toEqual(compressed.length * 2); | |
| const options = {'customDictionary': dictionary}; | |
| expect(txt).toEqual( | |
| bytesToString(BrotliDecode(Int8Array.from(compressed), options))); | |
| }); | |
| }); |