| /* 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"; |
| const testSuite = goog.require('goog.testing.testSuite'); |
| goog.require('goog.testing.asserts'); |
| |
| /** |
| * @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; |
| } |
| |
| testSuite({ |
| testMetadata() { |
| assertEquals( |
| '', bytesToString(BrotliDecode(Int8Array.from([1, 11, 0, 42, 3])))); |
| }, |
| |
| 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]; |
| assertEquals(txt.length, compressed.length * 2); |
| const options = {'customDictionary': dictionary}; |
| assertEquals( |
| txt, bytesToString(BrotliDecode(Int8Array.from(compressed), options))); |
| } |
| }); |