| /* Copyright 2023 Google Inc. All Rights Reserved. |
| |
| Distributed under MIT license. |
| See file LICENSE for detail or copy at https://opensource.org/licenses/MIT |
| */ |
| |
| import 'jasmine'; |
| |
| import {brotliDecode} from './decode'; |
| |
| function bytesToString(bytes: Int8Array): string { |
| const chars: number[] = new Uint16Array(bytes) as unknown as number[]; |
| return String.fromCharCode.apply(null, chars); |
| } |
| |
| function stringToBytes(str: string): Int8Array { |
| const 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))); |
| }); |
| }); |