| /* 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))); |
| }); |
| }); |