brotli_decompressor/huffman/tests.rs
1#[cfg(test)]
2
3use super::*;
4#[test]
5fn code_length_ht() {
6 let code_lengths: [u8; 19] = [0, 2, 3, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
7 let count: [u16; 6] = [0, 0, 3, 2, 0, 0];
8 let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
9 [HuffmanCode {
10 value: 0,
11 bits: 0,
12 }; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
13 BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
14 let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] = [HuffmanCode {
15 bits: 2,
16 value: 1,
17 },
18 HuffmanCode {
19 bits: 2,
20 value: 6,
21 },
22 HuffmanCode {
23 bits: 2,
24 value: 4,
25 },
26 HuffmanCode {
27 bits: 3,
28 value: 2,
29 },
30 HuffmanCode {
31 bits: 2,
32 value: 1,
33 },
34 HuffmanCode {
35 bits: 2,
36 value: 6,
37 },
38 HuffmanCode {
39 bits: 2,
40 value: 4,
41 },
42 HuffmanCode {
43 bits: 3,
44 value: 5,
45 },
46 HuffmanCode {
47 bits: 2,
48 value: 1,
49 },
50 HuffmanCode {
51 bits: 2,
52 value: 6,
53 },
54 HuffmanCode {
55 bits: 2,
56 value: 4,
57 },
58 HuffmanCode {
59 bits: 3,
60 value: 2,
61 },
62 HuffmanCode {
63 bits: 2,
64 value: 1,
65 },
66 HuffmanCode {
67 bits: 2,
68 value: 6,
69 },
70 HuffmanCode {
71 bits: 2,
72 value: 4,
73 },
74 HuffmanCode {
75 bits: 3,
76 value: 5,
77 },
78 HuffmanCode {
79 bits: 2,
80 value: 1,
81 },
82 HuffmanCode {
83 bits: 2,
84 value: 6,
85 },
86 HuffmanCode {
87 bits: 2,
88 value: 4,
89 },
90 HuffmanCode {
91 bits: 3,
92 value: 2,
93 },
94 HuffmanCode {
95 bits: 2,
96 value: 1,
97 },
98 HuffmanCode {
99 bits: 2,
100 value: 6,
101 },
102 HuffmanCode {
103 bits: 2,
104 value: 4,
105 },
106 HuffmanCode {
107 bits: 3,
108 value: 5,
109 },
110 HuffmanCode {
111 bits: 2,
112 value: 1,
113 },
114 HuffmanCode {
115 bits: 2,
116 value: 6,
117 },
118 HuffmanCode {
119 bits: 2,
120 value: 4,
121 },
122 HuffmanCode {
123 bits: 3,
124 value: 2,
125 },
126 HuffmanCode {
127 bits: 2,
128 value: 1,
129 },
130 HuffmanCode {
131 bits: 2,
132 value: 6,
133 },
134 HuffmanCode {
135 bits: 2,
136 value: 4,
137 },
138 HuffmanCode {
139 bits: 3,
140 value: 5,
141 }];
142 for index in 0..end_table.len() {
143 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
144 [index, end_table[index].bits as usize, end_table[index].value as usize]);
145 assert!(table[index] == end_table[index]);
146 }
147}
148#[test]
149fn code_length_stringy_ht() {
150 let code_lengths: [u8; 19] = [1, 0, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
151 let count: [u16; 6] = [0, 1, 1, 2, 0, 0];
152 let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
153 [HuffmanCode {
154 value: 0,
155 bits: 0,
156 }; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
157 BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
158 let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] = [HuffmanCode {
159 bits: 1,
160 value: 0,
161 },
162 HuffmanCode {
163 bits: 2,
164 value: 4,
165 },
166 HuffmanCode {
167 bits: 1,
168 value: 0,
169 },
170 HuffmanCode {
171 bits: 3,
172 value: 2,
173 },
174 HuffmanCode {
175 bits: 1,
176 value: 0,
177 },
178 HuffmanCode {
179 bits: 2,
180 value: 4,
181 },
182 HuffmanCode {
183 bits: 1,
184 value: 0,
185 },
186 HuffmanCode {
187 bits: 3,
188 value: 3,
189 },
190 HuffmanCode {
191 bits: 1,
192 value: 0,
193 },
194 HuffmanCode {
195 bits: 2,
196 value: 4,
197 },
198 HuffmanCode {
199 bits: 1,
200 value: 0,
201 },
202 HuffmanCode {
203 bits: 3,
204 value: 2,
205 },
206 HuffmanCode {
207 bits: 1,
208 value: 0,
209 },
210 HuffmanCode {
211 bits: 2,
212 value: 4,
213 },
214 HuffmanCode {
215 bits: 1,
216 value: 0,
217 },
218 HuffmanCode {
219 bits: 3,
220 value: 3,
221 },
222 HuffmanCode {
223 bits: 1,
224 value: 0,
225 },
226 HuffmanCode {
227 bits: 2,
228 value: 4,
229 },
230 HuffmanCode {
231 bits: 1,
232 value: 0,
233 },
234 HuffmanCode {
235 bits: 3,
236 value: 2,
237 },
238 HuffmanCode {
239 bits: 1,
240 value: 0,
241 },
242 HuffmanCode {
243 bits: 2,
244 value: 4,
245 },
246 HuffmanCode {
247 bits: 1,
248 value: 0,
249 },
250 HuffmanCode {
251 bits: 3,
252 value: 3,
253 },
254 HuffmanCode {
255 bits: 1,
256 value: 0,
257 },
258 HuffmanCode {
259 bits: 2,
260 value: 4,
261 },
262 HuffmanCode {
263 bits: 1,
264 value: 0,
265 },
266 HuffmanCode {
267 bits: 3,
268 value: 2,
269 },
270 HuffmanCode {
271 bits: 1,
272 value: 0,
273 },
274 HuffmanCode {
275 bits: 2,
276 value: 4,
277 },
278 HuffmanCode {
279 bits: 1,
280 value: 0,
281 },
282 HuffmanCode {
283 bits: 3,
284 value: 3,
285 }];
286 for index in 0..end_table.len() {
287 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
288 [index, end_table[index].bits as usize, end_table[index].value as usize]);
289 assert!(table[index] == end_table[index]);
290 }
291}
292#[test]
293fn code_length_single_value_ht() {
294 let code_lengths: [u8; 19] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0];
295 let count: [u16; 6] = [0, 1, 0, 0, 0, 0];
296 let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
297 [HuffmanCode {
298 value: 0,
299 bits: 0,
300 }; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
301 BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
302 let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
303 [HuffmanCode {
304 bits: 0,
305 value: 9,
306 }; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
307 for index in 0..end_table.len() {
308 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
309 [index, end_table[index].bits as usize, end_table[index].value as usize]);
310 assert!(table[index] == end_table[index]);
311 }
312}
313
314#[test]
315fn complex() {
316 let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
317 BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
318 [65535, 65535, 65535, 72, 15, 0, 65, 5, 6, 66, 19, 65535, 65535, 65535, 65535, 65535, 1, 2, 3,
319 4, 57, 16, 7, 8, 9, 10, 11, 12, 13, 14, 17, 73, 69, 18, 64, 20, 21, 22, 23, 24, 25, 26, 27,
320 28, 37, 31, 47, 34, 36, 103, 37, 36, 44, 38, 39, 40, 41, 49, 43, 46, 48, 50, 51, 50, 49, 138,
321 55, 58, 68, 61, 56, 57, 62, 77, 88, 66, 76, 71, 63, 64, 67, 68, 127, 71, 117, 114, 73, 74,
322 77, 76, 102, 86, 116, 255, 79, 80, 84, 82, 83, 87, 92, 93, 94, 95, 89, 90, 91, 96, 109, 117,
323 102, 110, 97, 98, 99, 100, 122, 149, 115, 104, 105, 106, 107, 108, 167, 116, 111, 112, 113,
324 114, 128, 118, 232, 254, 119, 120, 121, 127, 123, 142, 132, 133, 129, 129, 136, 130, 131,
325 132, 133, 134, 135, 137, 224, 233, 139, 140, 141, 142, 143, 144, 162, 146, 147, 148, 169,
326 157, 151, 152, 153, 154, 155, 156, 158, 181, 159, 160, 161, 162, 184, 164, 174, 180, 167,
327 182, 212, 170, 171, 172, 190, 201, 175, 176, 177, 178, 179, 180, 188, 194, 183, 184, 185,
328 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
329 236, 207, 221, 216, 208, 209, 210, 211, 214, 213, 220, 215, 218, 217, 219, 222, 223, 234,
330 227, 229, 224, 235, 226, 231, 228, 244, 230, 233, 232, 255, 253, 237, 251, 237, 238, 239,
331 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 252, 253, 254, 255, 0, 23040,
332 3500, 1, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 38400, 3500, 1, 0, 61712,
333 21033, 32767, 0, 60189, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
334 51712, 3501, 1, 0, 15360, 0, 0, 0, 1536, 3502, 1, 0, 8192, 3500, 1, 0, 61792, 21033, 32767,
335 0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 38400, 3500, 1, 0, 0, 0, 0,
336 0, 256, 0, 0, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 61792, 21033, 32767, 0, 18208, 35059, 32767,
337 0, 4102, 0, 0, 65408, 65535, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
338 32768, 54143, 32705, 0, 0, 54016, 32705, 0, 0, 54016, 32705, 0, 3584, 0, 0, 0, 6, 0, 0,
339 65408, 7, 3502, 32767, 0, 8192, 3500, 1, 0, 0, 54016, 32705, 0, 1, 0, 0, 0, 8192, 3500, 1, 0,
340 12288, 54016, 32705, 0, 8192, 54016, 32705, 0, 61888, 21033, 32767, 0, 14237, 35059, 32767,
341 0, 88, 53952, 32705, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 54016, 32705, 0, 8192, 3500, 1, 0,
342 8192, 3500, 1, 0, 62016, 21033, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 8192, 3500,
343 1, 0, 61936, 21033, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0,
344 0, 0, 0, 44144, 37434, 32767, 0, 19984, 53952, 32705, 0, 0, 0, 0, 0, 62076, 21033, 32767, 0,
345 62080, 21033, 32767, 0, 62084, 21033, 32767, 0, 64, 53952, 32705, 0, 65535, 65535, 65535,
346 65535, 64, 0, 8296, 1, 62032, 21033, 32767, 0, 16900, 27601, 32767, 0, 18096, 27604, 32767,
347 0, 0, 0, 0, 0, 62080, 21033, 32767, 0, 17447, 27601, 32767, 0, 62080, 21033, 32767, 0, 17246,
348 27601, 32767, 0, 0, 0, 0, 0, 62784, 36821, 32767, 0, 62144, 21033, 32767, 0, 4085, 27601,
349 32767, 0, 44624, 27603, 32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 46488,
350 27603, 32767, 0, 18096, 27604, 32767, 0, 0, 0, 0, 0, 62256, 21033, 32767, 0, 23819, 27601,
351 32767, 0, 62288, 21033, 32767, 0, 20326, 27600, 32767, 0, 15584, 36820, 32767, 0, 15096,
352 36820, 32767, 0, 12288, 36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 18096,
353 27604, 32767, 0, 62400, 21033, 32767, 0, 1299, 0, 0, 0, 51315, 34237, 23510, 56320, 18096,
354 27604, 32767, 0, 62400, 21033, 32767, 0, 11120, 27601, 32767, 0, 13272, 27604, 32767, 0, 28,
355 0, 0, 0, 62384, 21033, 32767, 0, 10134, 27601, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
356 let mut counts: [u16; 11] = [0, 0, 0, 1, 6, 7, 4, 9, 17, 12, 60];
357 let end_counts: [u16; 11] = [0, 0, 0, 1, 6, 7, 4, 9, 17, 0, 0];
358 let mut table: [HuffmanCode; 328] = [HuffmanCode {
359 bits: 0,
360 value: 0,
361 }; 328];
362 let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
363 assert_eq!(size, 328);
364 assert_eq!(counts, end_counts);
365 let end_table: [HuffmanCode; 328] = [HuffmanCode {
366 bits: 3,
367 value: 72,
368 },
369 HuffmanCode {
370 bits: 5,
371 value: 0,
372 },
373 HuffmanCode {
374 bits: 4,
375 value: 76,
376 },
377 HuffmanCode {
378 bits: 6,
379 value: 117,
380 },
381 HuffmanCode {
382 bits: 4,
383 value: 15,
384 },
385 HuffmanCode {
386 bits: 5,
387 value: 4,
388 },
389 HuffmanCode {
390 bits: 4,
391 value: 232,
392 },
393 HuffmanCode {
394 bits: 8,
395 value: 12,
396 },
397 HuffmanCode {
398 bits: 3,
399 value: 72,
400 },
401 HuffmanCode {
402 bits: 5,
403 value: 2,
404 },
405 HuffmanCode {
406 bits: 4,
407 value: 116,
408 },
409 HuffmanCode {
410 bits: 7,
411 value: 128,
412 },
413 HuffmanCode {
414 bits: 4,
415 value: 73,
416 },
417 HuffmanCode {
418 bits: 5,
419 value: 77,
420 },
421 HuffmanCode {
422 bits: 4,
423 value: 255,
424 },
425 HuffmanCode {
426 bits: 9,
427 value: 251,
428 },
429 HuffmanCode {
430 bits: 3,
431 value: 72,
432 },
433 HuffmanCode {
434 bits: 5,
435 value: 1,
436 },
437 HuffmanCode {
438 bits: 4,
439 value: 76,
440 },
441 HuffmanCode {
442 bits: 7,
443 value: 5,
444 },
445 HuffmanCode {
446 bits: 4,
447 value: 15,
448 },
449 HuffmanCode {
450 bits: 5,
451 value: 57,
452 },
453 HuffmanCode {
454 bits: 4,
455 value: 232,
456 },
457 HuffmanCode {
458 bits: 8,
459 value: 74,
460 },
461 HuffmanCode {
462 bits: 3,
463 value: 72,
464 },
465 HuffmanCode {
466 bits: 5,
467 value: 3,
468 },
469 HuffmanCode {
470 bits: 4,
471 value: 116,
472 },
473 HuffmanCode {
474 bits: 7,
475 value: 251,
476 },
477 HuffmanCode {
478 bits: 4,
479 value: 73,
480 },
481 HuffmanCode {
482 bits: 6,
483 value: 65,
484 },
485 HuffmanCode {
486 bits: 4,
487 value: 255,
488 },
489 HuffmanCode {
490 bits: 10,
491 value: 265,
492 },
493 HuffmanCode {
494 bits: 3,
495 value: 72,
496 },
497 HuffmanCode {
498 bits: 5,
499 value: 0,
500 },
501 HuffmanCode {
502 bits: 4,
503 value: 76,
504 },
505 HuffmanCode {
506 bits: 6,
507 value: 254,
508 },
509 HuffmanCode {
510 bits: 4,
511 value: 15,
512 },
513 HuffmanCode {
514 bits: 5,
515 value: 4,
516 },
517 HuffmanCode {
518 bits: 4,
519 value: 232,
520 },
521 HuffmanCode {
522 bits: 8,
523 value: 18,
524 },
525 HuffmanCode {
526 bits: 3,
527 value: 72,
528 },
529 HuffmanCode {
530 bits: 5,
531 value: 2,
532 },
533 HuffmanCode {
534 bits: 4,
535 value: 116,
536 },
537 HuffmanCode {
538 bits: 7,
539 value: 224,
540 },
541 HuffmanCode {
542 bits: 4,
543 value: 73,
544 },
545 HuffmanCode {
546 bits: 5,
547 value: 77,
548 },
549 HuffmanCode {
550 bits: 4,
551 value: 255,
552 },
553 HuffmanCode {
554 bits: 10,
555 value: 233,
556 },
557 HuffmanCode {
558 bits: 3,
559 value: 72,
560 },
561 HuffmanCode {
562 bits: 5,
563 value: 1,
564 },
565 HuffmanCode {
566 bits: 4,
567 value: 76,
568 },
569 HuffmanCode {
570 bits: 7,
571 value: 69,
572 },
573 HuffmanCode {
574 bits: 4,
575 value: 15,
576 },
577 HuffmanCode {
578 bits: 5,
579 value: 57,
580 },
581 HuffmanCode {
582 bits: 4,
583 value: 232,
584 },
585 HuffmanCode {
586 bits: 9,
587 value: 203,
588 },
589 HuffmanCode {
590 bits: 3,
591 value: 72,
592 },
593 HuffmanCode {
594 bits: 5,
595 value: 3,
596 },
597 HuffmanCode {
598 bits: 4,
599 value: 116,
600 },
601 HuffmanCode {
602 bits: 8,
603 value: 8,
604 },
605 HuffmanCode {
606 bits: 4,
607 value: 73,
608 },
609 HuffmanCode {
610 bits: 6,
611 value: 68,
612 },
613 HuffmanCode {
614 bits: 4,
615 value: 255,
616 },
617 HuffmanCode {
618 bits: 10,
619 value: 249,
620 },
621 HuffmanCode {
622 bits: 3,
623 value: 72,
624 },
625 HuffmanCode {
626 bits: 5,
627 value: 0,
628 },
629 HuffmanCode {
630 bits: 4,
631 value: 76,
632 },
633 HuffmanCode {
634 bits: 6,
635 value: 117,
636 },
637 HuffmanCode {
638 bits: 4,
639 value: 15,
640 },
641 HuffmanCode {
642 bits: 5,
643 value: 4,
644 },
645 HuffmanCode {
646 bits: 4,
647 value: 232,
648 },
649 HuffmanCode {
650 bits: 8,
651 value: 14,
652 },
653 HuffmanCode {
654 bits: 3,
655 value: 72,
656 },
657 HuffmanCode {
658 bits: 5,
659 value: 2,
660 },
661 HuffmanCode {
662 bits: 4,
663 value: 116,
664 },
665 HuffmanCode {
666 bits: 7,
667 value: 136,
668 },
669 HuffmanCode {
670 bits: 4,
671 value: 73,
672 },
673 HuffmanCode {
674 bits: 5,
675 value: 77,
676 },
677 HuffmanCode {
678 bits: 4,
679 value: 255,
680 },
681 HuffmanCode {
682 bits: 10,
683 value: 193,
684 },
685 HuffmanCode {
686 bits: 3,
687 value: 72,
688 },
689 HuffmanCode {
690 bits: 5,
691 value: 1,
692 },
693 HuffmanCode {
694 bits: 4,
695 value: 76,
696 },
697 HuffmanCode {
698 bits: 7,
699 value: 16,
700 },
701 HuffmanCode {
702 bits: 4,
703 value: 15,
704 },
705 HuffmanCode {
706 bits: 5,
707 value: 57,
708 },
709 HuffmanCode {
710 bits: 4,
711 value: 232,
712 },
713 HuffmanCode {
714 bits: 8,
715 value: 115,
716 },
717 HuffmanCode {
718 bits: 3,
719 value: 72,
720 },
721 HuffmanCode {
722 bits: 5,
723 value: 3,
724 },
725 HuffmanCode {
726 bits: 4,
727 value: 116,
728 },
729 HuffmanCode {
730 bits: 8,
731 value: 6,
732 },
733 HuffmanCode {
734 bits: 4,
735 value: 73,
736 },
737 HuffmanCode {
738 bits: 6,
739 value: 65,
740 },
741 HuffmanCode {
742 bits: 4,
743 value: 255,
744 },
745 HuffmanCode {
746 bits: 10,
747 value: 209,
748 },
749 HuffmanCode {
750 bits: 3,
751 value: 72,
752 },
753 HuffmanCode {
754 bits: 5,
755 value: 0,
756 },
757 HuffmanCode {
758 bits: 4,
759 value: 76,
760 },
761 HuffmanCode {
762 bits: 6,
763 value: 254,
764 },
765 HuffmanCode {
766 bits: 4,
767 value: 15,
768 },
769 HuffmanCode {
770 bits: 5,
771 value: 4,
772 },
773 HuffmanCode {
774 bits: 4,
775 value: 232,
776 },
777 HuffmanCode {
778 bits: 8,
779 value: 67,
780 },
781 HuffmanCode {
782 bits: 3,
783 value: 72,
784 },
785 HuffmanCode {
786 bits: 5,
787 value: 2,
788 },
789 HuffmanCode {
790 bits: 4,
791 value: 116,
792 },
793 HuffmanCode {
794 bits: 7,
795 value: 235,
796 },
797 HuffmanCode {
798 bits: 4,
799 value: 73,
800 },
801 HuffmanCode {
802 bits: 5,
803 value: 77,
804 },
805 HuffmanCode {
806 bits: 4,
807 value: 255,
808 },
809 HuffmanCode {
810 bits: 10,
811 value: 177,
812 },
813 HuffmanCode {
814 bits: 3,
815 value: 72,
816 },
817 HuffmanCode {
818 bits: 5,
819 value: 1,
820 },
821 HuffmanCode {
822 bits: 4,
823 value: 76,
824 },
825 HuffmanCode {
826 bits: 7,
827 value: 114,
828 },
829 HuffmanCode {
830 bits: 4,
831 value: 15,
832 },
833 HuffmanCode {
834 bits: 5,
835 value: 57,
836 },
837 HuffmanCode {
838 bits: 4,
839 value: 232,
840 },
841 HuffmanCode {
842 bits: 9,
843 value: 143,
844 },
845 HuffmanCode {
846 bits: 3,
847 value: 72,
848 },
849 HuffmanCode {
850 bits: 5,
851 value: 3,
852 },
853 HuffmanCode {
854 bits: 4,
855 value: 116,
856 },
857 HuffmanCode {
858 bits: 8,
859 value: 10,
860 },
861 HuffmanCode {
862 bits: 4,
863 value: 73,
864 },
865 HuffmanCode {
866 bits: 6,
867 value: 68,
868 },
869 HuffmanCode {
870 bits: 4,
871 value: 255,
872 },
873 HuffmanCode {
874 bits: 10,
875 value: 193,
876 },
877 HuffmanCode {
878 bits: 3,
879 value: 72,
880 },
881 HuffmanCode {
882 bits: 5,
883 value: 0,
884 },
885 HuffmanCode {
886 bits: 4,
887 value: 76,
888 },
889 HuffmanCode {
890 bits: 6,
891 value: 117,
892 },
893 HuffmanCode {
894 bits: 4,
895 value: 15,
896 },
897 HuffmanCode {
898 bits: 5,
899 value: 4,
900 },
901 HuffmanCode {
902 bits: 4,
903 value: 232,
904 },
905 HuffmanCode {
906 bits: 8,
907 value: 13,
908 },
909 HuffmanCode {
910 bits: 3,
911 value: 72,
912 },
913 HuffmanCode {
914 bits: 5,
915 value: 2,
916 },
917 HuffmanCode {
918 bits: 4,
919 value: 116,
920 },
921 HuffmanCode {
922 bits: 7,
923 value: 128,
924 },
925 HuffmanCode {
926 bits: 4,
927 value: 73,
928 },
929 HuffmanCode {
930 bits: 5,
931 value: 77,
932 },
933 HuffmanCode {
934 bits: 4,
935 value: 255,
936 },
937 HuffmanCode {
938 bits: 10,
939 value: 125,
940 },
941 HuffmanCode {
942 bits: 3,
943 value: 72,
944 },
945 HuffmanCode {
946 bits: 5,
947 value: 1,
948 },
949 HuffmanCode {
950 bits: 4,
951 value: 76,
952 },
953 HuffmanCode {
954 bits: 7,
955 value: 5,
956 },
957 HuffmanCode {
958 bits: 4,
959 value: 15,
960 },
961 HuffmanCode {
962 bits: 5,
963 value: 57,
964 },
965 HuffmanCode {
966 bits: 4,
967 value: 232,
968 },
969 HuffmanCode {
970 bits: 8,
971 value: 102,
972 },
973 HuffmanCode {
974 bits: 3,
975 value: 72,
976 },
977 HuffmanCode {
978 bits: 5,
979 value: 3,
980 },
981 HuffmanCode {
982 bits: 4,
983 value: 116,
984 },
985 HuffmanCode {
986 bits: 7,
987 value: 251,
988 },
989 HuffmanCode {
990 bits: 4,
991 value: 73,
992 },
993 HuffmanCode {
994 bits: 6,
995 value: 65,
996 },
997 HuffmanCode {
998 bits: 4,
999 value: 255,
1000 },
1001 HuffmanCode {
1002 bits: 10,
1003 value: 141,
1004 },
1005 HuffmanCode {
1006 bits: 3,
1007 value: 72,
1008 },
1009 HuffmanCode {
1010 bits: 5,
1011 value: 0,
1012 },
1013 HuffmanCode {
1014 bits: 4,
1015 value: 76,
1016 },
1017 HuffmanCode {
1018 bits: 6,
1019 value: 254,
1020 },
1021 HuffmanCode {
1022 bits: 4,
1023 value: 15,
1024 },
1025 HuffmanCode {
1026 bits: 5,
1027 value: 4,
1028 },
1029 HuffmanCode {
1030 bits: 4,
1031 value: 232,
1032 },
1033 HuffmanCode {
1034 bits: 8,
1035 value: 64,
1036 },
1037 HuffmanCode {
1038 bits: 3,
1039 value: 72,
1040 },
1041 HuffmanCode {
1042 bits: 5,
1043 value: 2,
1044 },
1045 HuffmanCode {
1046 bits: 4,
1047 value: 116,
1048 },
1049 HuffmanCode {
1050 bits: 7,
1051 value: 224,
1052 },
1053 HuffmanCode {
1054 bits: 4,
1055 value: 73,
1056 },
1057 HuffmanCode {
1058 bits: 5,
1059 value: 77,
1060 },
1061 HuffmanCode {
1062 bits: 4,
1063 value: 255,
1064 },
1065 HuffmanCode {
1066 bits: 10,
1067 value: 109,
1068 },
1069 HuffmanCode {
1070 bits: 3,
1071 value: 72,
1072 },
1073 HuffmanCode {
1074 bits: 5,
1075 value: 1,
1076 },
1077 HuffmanCode {
1078 bits: 4,
1079 value: 76,
1080 },
1081 HuffmanCode {
1082 bits: 7,
1083 value: 69,
1084 },
1085 HuffmanCode {
1086 bits: 4,
1087 value: 15,
1088 },
1089 HuffmanCode {
1090 bits: 5,
1091 value: 57,
1092 },
1093 HuffmanCode {
1094 bits: 4,
1095 value: 232,
1096 },
1097 HuffmanCode {
1098 bits: 9,
1099 value: 77,
1100 },
1101 HuffmanCode {
1102 bits: 3,
1103 value: 72,
1104 },
1105 HuffmanCode {
1106 bits: 5,
1107 value: 3,
1108 },
1109 HuffmanCode {
1110 bits: 4,
1111 value: 116,
1112 },
1113 HuffmanCode {
1114 bits: 8,
1115 value: 9,
1116 },
1117 HuffmanCode {
1118 bits: 4,
1119 value: 73,
1120 },
1121 HuffmanCode {
1122 bits: 6,
1123 value: 68,
1124 },
1125 HuffmanCode {
1126 bits: 4,
1127 value: 255,
1128 },
1129 HuffmanCode {
1130 bits: 10,
1131 value: 125,
1132 },
1133 HuffmanCode {
1134 bits: 3,
1135 value: 72,
1136 },
1137 HuffmanCode {
1138 bits: 5,
1139 value: 0,
1140 },
1141 HuffmanCode {
1142 bits: 4,
1143 value: 76,
1144 },
1145 HuffmanCode {
1146 bits: 6,
1147 value: 117,
1148 },
1149 HuffmanCode {
1150 bits: 4,
1151 value: 15,
1152 },
1153 HuffmanCode {
1154 bits: 5,
1155 value: 4,
1156 },
1157 HuffmanCode {
1158 bits: 4,
1159 value: 232,
1160 },
1161 HuffmanCode {
1162 bits: 8,
1163 value: 17,
1164 },
1165 HuffmanCode {
1166 bits: 3,
1167 value: 72,
1168 },
1169 HuffmanCode {
1170 bits: 5,
1171 value: 2,
1172 },
1173 HuffmanCode {
1174 bits: 4,
1175 value: 116,
1176 },
1177 HuffmanCode {
1178 bits: 7,
1179 value: 136,
1180 },
1181 HuffmanCode {
1182 bits: 4,
1183 value: 73,
1184 },
1185 HuffmanCode {
1186 bits: 5,
1187 value: 77,
1188 },
1189 HuffmanCode {
1190 bits: 4,
1191 value: 255,
1192 },
1193 HuffmanCode {
1194 bits: 10,
1195 value: 69,
1196 },
1197 HuffmanCode {
1198 bits: 3,
1199 value: 72,
1200 },
1201 HuffmanCode {
1202 bits: 5,
1203 value: 1,
1204 },
1205 HuffmanCode {
1206 bits: 4,
1207 value: 76,
1208 },
1209 HuffmanCode {
1210 bits: 7,
1211 value: 16,
1212 },
1213 HuffmanCode {
1214 bits: 4,
1215 value: 15,
1216 },
1217 HuffmanCode {
1218 bits: 5,
1219 value: 57,
1220 },
1221 HuffmanCode {
1222 bits: 4,
1223 value: 232,
1224 },
1225 HuffmanCode {
1226 bits: 9,
1227 value: 41,
1228 },
1229 HuffmanCode {
1230 bits: 3,
1231 value: 72,
1232 },
1233 HuffmanCode {
1234 bits: 5,
1235 value: 3,
1236 },
1237 HuffmanCode {
1238 bits: 4,
1239 value: 116,
1240 },
1241 HuffmanCode {
1242 bits: 8,
1243 value: 7,
1244 },
1245 HuffmanCode {
1246 bits: 4,
1247 value: 73,
1248 },
1249 HuffmanCode {
1250 bits: 6,
1251 value: 65,
1252 },
1253 HuffmanCode {
1254 bits: 4,
1255 value: 255,
1256 },
1257 HuffmanCode {
1258 bits: 10,
1259 value: 85,
1260 },
1261 HuffmanCode {
1262 bits: 3,
1263 value: 72,
1264 },
1265 HuffmanCode {
1266 bits: 5,
1267 value: 0,
1268 },
1269 HuffmanCode {
1270 bits: 4,
1271 value: 76,
1272 },
1273 HuffmanCode {
1274 bits: 6,
1275 value: 254,
1276 },
1277 HuffmanCode {
1278 bits: 4,
1279 value: 15,
1280 },
1281 HuffmanCode {
1282 bits: 5,
1283 value: 4,
1284 },
1285 HuffmanCode {
1286 bits: 4,
1287 value: 232,
1288 },
1289 HuffmanCode {
1290 bits: 8,
1291 value: 71,
1292 },
1293 HuffmanCode {
1294 bits: 3,
1295 value: 72,
1296 },
1297 HuffmanCode {
1298 bits: 5,
1299 value: 2,
1300 },
1301 HuffmanCode {
1302 bits: 4,
1303 value: 116,
1304 },
1305 HuffmanCode {
1306 bits: 7,
1307 value: 235,
1308 },
1309 HuffmanCode {
1310 bits: 4,
1311 value: 73,
1312 },
1313 HuffmanCode {
1314 bits: 5,
1315 value: 77,
1316 },
1317 HuffmanCode {
1318 bits: 4,
1319 value: 255,
1320 },
1321 HuffmanCode {
1322 bits: 10,
1323 value: 53,
1324 },
1325 HuffmanCode {
1326 bits: 3,
1327 value: 72,
1328 },
1329 HuffmanCode {
1330 bits: 5,
1331 value: 1,
1332 },
1333 HuffmanCode {
1334 bits: 4,
1335 value: 76,
1336 },
1337 HuffmanCode {
1338 bits: 7,
1339 value: 114,
1340 },
1341 HuffmanCode {
1342 bits: 4,
1343 value: 15,
1344 },
1345 HuffmanCode {
1346 bits: 5,
1347 value: 57,
1348 },
1349 HuffmanCode {
1350 bits: 4,
1351 value: 232,
1352 },
1353 HuffmanCode {
1354 bits: 9,
1355 value: 17,
1356 },
1357 HuffmanCode {
1358 bits: 3,
1359 value: 72,
1360 },
1361 HuffmanCode {
1362 bits: 5,
1363 value: 3,
1364 },
1365 HuffmanCode {
1366 bits: 4,
1367 value: 116,
1368 },
1369 HuffmanCode {
1370 bits: 8,
1371 value: 11,
1372 },
1373 HuffmanCode {
1374 bits: 4,
1375 value: 73,
1376 },
1377 HuffmanCode {
1378 bits: 6,
1379 value: 68,
1380 },
1381 HuffmanCode {
1382 bits: 4,
1383 value: 255,
1384 },
1385 HuffmanCode {
1386 bits: 10,
1387 value: 69,
1388 },
1389 HuffmanCode {
1390 bits: 1,
1391 value: 66,
1392 },
1393 HuffmanCode {
1394 bits: 1,
1395 value: 127,
1396 },
1397 HuffmanCode {
1398 bits: 1,
1399 value: 129,
1400 },
1401 HuffmanCode {
1402 bits: 1,
1403 value: 130,
1404 },
1405 HuffmanCode {
1406 bits: 1,
1407 value: 131,
1408 },
1409 HuffmanCode {
1410 bits: 1,
1411 value: 132,
1412 },
1413 HuffmanCode {
1414 bits: 1,
1415 value: 133,
1416 },
1417 HuffmanCode {
1418 bits: 1,
1419 value: 134,
1420 },
1421 HuffmanCode {
1422 bits: 1,
1423 value: 135,
1424 },
1425 HuffmanCode {
1426 bits: 1,
1427 value: 137,
1428 },
1429 HuffmanCode {
1430 bits: 1,
1431 value: 233,
1432 },
1433 HuffmanCode {
1434 bits: 1,
1435 value: 253,
1436 },
1437 HuffmanCode {
1438 bits: 2,
1439 value: 19,
1440 },
1441 HuffmanCode {
1442 bits: 2,
1443 value: 21,
1444 },
1445 HuffmanCode {
1446 bits: 2,
1447 value: 20,
1448 },
1449 HuffmanCode {
1450 bits: 2,
1451 value: 22,
1452 },
1453 HuffmanCode {
1454 bits: 2,
1455 value: 23,
1456 },
1457 HuffmanCode {
1458 bits: 2,
1459 value: 25,
1460 },
1461 HuffmanCode {
1462 bits: 2,
1463 value: 24,
1464 },
1465 HuffmanCode {
1466 bits: 2,
1467 value: 26,
1468 },
1469 HuffmanCode {
1470 bits: 2,
1471 value: 27,
1472 },
1473 HuffmanCode {
1474 bits: 2,
1475 value: 37,
1476 },
1477 HuffmanCode {
1478 bits: 2,
1479 value: 28,
1480 },
1481 HuffmanCode {
1482 bits: 2,
1483 value: 38,
1484 },
1485 HuffmanCode {
1486 bits: 2,
1487 value: 39,
1488 },
1489 HuffmanCode {
1490 bits: 2,
1491 value: 41,
1492 },
1493 HuffmanCode {
1494 bits: 2,
1495 value: 40,
1496 },
1497 HuffmanCode {
1498 bits: 2,
1499 value: 49,
1500 },
1501 HuffmanCode {
1502 bits: 2,
1503 value: 138,
1504 },
1505 HuffmanCode {
1506 bits: 2,
1507 value: 140,
1508 },
1509 HuffmanCode {
1510 bits: 2,
1511 value: 139,
1512 },
1513 HuffmanCode {
1514 bits: 2,
1515 value: 141,
1516 },
1517 HuffmanCode {
1518 bits: 2,
1519 value: 142,
1520 },
1521 HuffmanCode {
1522 bits: 2,
1523 value: 144,
1524 },
1525 HuffmanCode {
1526 bits: 2,
1527 value: 143,
1528 },
1529 HuffmanCode {
1530 bits: 2,
1531 value: 162,
1532 },
1533 HuffmanCode {
1534 bits: 2,
1535 value: 184,
1536 },
1537 HuffmanCode {
1538 bits: 2,
1539 value: 186,
1540 },
1541 HuffmanCode {
1542 bits: 2,
1543 value: 185,
1544 },
1545 HuffmanCode {
1546 bits: 2,
1547 value: 187,
1548 },
1549 HuffmanCode {
1550 bits: 2,
1551 value: 188,
1552 },
1553 HuffmanCode {
1554 bits: 2,
1555 value: 190,
1556 },
1557 HuffmanCode {
1558 bits: 2,
1559 value: 189,
1560 },
1561 HuffmanCode {
1562 bits: 2,
1563 value: 191,
1564 },
1565 HuffmanCode {
1566 bits: 2,
1567 value: 192,
1568 },
1569 HuffmanCode {
1570 bits: 2,
1571 value: 194,
1572 },
1573 HuffmanCode {
1574 bits: 2,
1575 value: 193,
1576 },
1577 HuffmanCode {
1578 bits: 2,
1579 value: 195,
1580 },
1581 HuffmanCode {
1582 bits: 2,
1583 value: 196,
1584 },
1585 HuffmanCode {
1586 bits: 2,
1587 value: 198,
1588 },
1589 HuffmanCode {
1590 bits: 2,
1591 value: 197,
1592 },
1593 HuffmanCode {
1594 bits: 2,
1595 value: 199,
1596 },
1597 HuffmanCode {
1598 bits: 2,
1599 value: 200,
1600 },
1601 HuffmanCode {
1602 bits: 2,
1603 value: 202,
1604 },
1605 HuffmanCode {
1606 bits: 2,
1607 value: 201,
1608 },
1609 HuffmanCode {
1610 bits: 2,
1611 value: 203,
1612 },
1613 HuffmanCode {
1614 bits: 2,
1615 value: 236,
1616 },
1617 HuffmanCode {
1618 bits: 2,
1619 value: 238,
1620 },
1621 HuffmanCode {
1622 bits: 2,
1623 value: 237,
1624 },
1625 HuffmanCode {
1626 bits: 2,
1627 value: 239,
1628 },
1629 HuffmanCode {
1630 bits: 2,
1631 value: 240,
1632 },
1633 HuffmanCode {
1634 bits: 2,
1635 value: 242,
1636 },
1637 HuffmanCode {
1638 bits: 2,
1639 value: 241,
1640 },
1641 HuffmanCode {
1642 bits: 2,
1643 value: 243,
1644 },
1645 HuffmanCode {
1646 bits: 2,
1647 value: 244,
1648 },
1649 HuffmanCode {
1650 bits: 2,
1651 value: 246,
1652 },
1653 HuffmanCode {
1654 bits: 2,
1655 value: 245,
1656 },
1657 HuffmanCode {
1658 bits: 2,
1659 value: 247,
1660 },
1661 HuffmanCode {
1662 bits: 2,
1663 value: 248,
1664 },
1665 HuffmanCode {
1666 bits: 2,
1667 value: 250,
1668 },
1669 HuffmanCode {
1670 bits: 2,
1671 value: 249,
1672 },
1673 HuffmanCode {
1674 bits: 2,
1675 value: 252,
1676 }];
1677 for index in 0..end_table.len() {
1678 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
1679 [index, end_table[index].bits as usize, end_table[index].value as usize]);
1680 assert!(table[index] == end_table[index]);
1681 }
1682}
1683#[test]
1684fn multilevel() {
1685 let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
1686 BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
1687 [65535, 65535, 65535, 65535, 0, 1, 3, 2, 6, 14, 17, 21, 65535, 65535, 65535, 65535, 72, 48, 4,
1688 8, 5, 73, 7, 9, 16, 10, 11, 12, 13, 20, 15, 47, 24, 22, 19, 21, 77, 41, 25, 24, 32, 26, 27,
1689 28, 29, 30, 31, 33, 40, 34, 35, 36, 37, 38, 39, 49, 56, 42, 43, 44, 45, 46, 57, 65, 64, 50,
1690 51, 52, 53, 54, 55, 71, 76, 58, 59, 60, 61, 62, 63, 97, 80, 66, 67, 68, 69, 78, 82, 75, 73,
1691 137, 75, 81, 96, 102, 138, 80, 88, 82, 83, 84, 85, 86, 87, 89, 112, 90, 91, 92, 93, 94, 95,
1692 117, 104, 98, 99, 100, 101, 105, 116, 109, 120, 106, 107, 108, 109, 110, 111, 118, 114, 122,
1693 115, 116, 170, 129, 121, 120, 128, 122, 123, 124, 125, 126, 127, 145, 136, 130, 131, 132,
1694 133, 134, 135, 140, 144, 139, 191, 216, 141, 142, 143, 169, 152, 146, 147, 148, 149, 150,
1695 151, 153, 160, 154, 155, 156, 157, 158, 159, 161, 168, 162, 163, 164, 165, 166, 167, 171,
1696 176, 193, 225, 177, 0, 0, 0, 0, 184, 178, 179, 180, 181, 182, 183, 185, 192, 186, 187, 188,
1697 189, 190, 209, 251, 200, 194, 195, 196, 197, 198, 199, 201, 208, 202, 203, 204, 205, 206,
1698 207, 217, 232, 210, 211, 212, 213, 214, 215, 226, 224, 218, 219, 220, 221, 222, 223, 241,
1699 248, 233, 227, 228, 229, 230, 231, 234, 240, 247, 235, 236, 237, 238, 239, 0, 255, 242, 243,
1700 244, 245, 246, 250, 0, 252, 0, 0, 0, 253, 254, 0, 0, 27136, 22, 1, 0, 0, 0, 0, 0, 12288, 22,
1701 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 42496, 22, 1, 0, 57680, 24511, 32767, 0, 60189, 35058, 32767,
1702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 55808, 23, 1, 0, 15360, 0, 0, 0, 5632,
1703 24, 1, 0, 12288, 22, 1, 0, 57760, 24511, 32767, 0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0,
1704 0, 0, 4102, 0, 0, 0, 42496, 22, 1, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 12288, 22, 1, 0,
1705 57760, 24511, 32767, 0, 18208, 35059, 32767, 0, 4102, 0, 0, 65408, 65535, 0, 0, 0, 0, 0, 0,
1706 0, 4102, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 32768, 255, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0,
1707 3584, 0, 0, 0, 6, 0, 0, 65408, 7, 24, 32767, 0, 12288, 22, 1, 0, 0, 128, 1, 0, 1, 0, 0, 0,
1708 12288, 22, 1, 0, 12288, 128, 1, 0, 8192, 128, 1, 0, 57856, 24511, 32767, 0, 14237, 35059,
1709 32767, 0, 88, 32, 1, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 128, 1, 0, 12288, 22, 1, 0, 12288,
1710 22, 1, 0, 57984, 24511, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 12288, 22, 1, 0,
1711 57904, 24511, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0, 0, 0,
1712 0, 44144, 37434, 32767, 0, 19984, 32, 1, 0, 0, 0, 0, 0, 58044, 24511, 32767, 0, 58048, 24511,
1713 32767, 0, 58052, 24511, 32767, 0, 64, 32, 1, 0, 65535, 65535, 65535, 65535, 64, 0, 8296, 1,
1714 58000, 24511, 32767, 0, 4612, 24513, 32767, 0, 5784, 24516, 32767, 0, 0, 0, 0, 0, 58048,
1715 24511, 32767, 0, 5159, 24513, 32767, 0, 58048, 24511, 32767, 0, 4958, 24513, 32767, 0, 0, 0,
1716 0, 0, 62784, 36821, 32767, 0, 58112, 24511, 32767, 0, 57333, 24512, 32767, 0, 32336, 24515,
1717 32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 34200, 24515, 32767, 0, 5784,
1718 24516, 32767, 0, 0, 0, 0, 0, 58224, 24511, 32767, 0, 11531, 24513, 32767, 0, 58256, 24511,
1719 32767, 0, 8038, 24512, 32767, 0, 15584, 36820, 32767, 0, 15096, 36820, 32767, 0, 12288,
1720 36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 5784, 24516, 32767, 0, 58368,
1721 24511, 32767, 0, 779, 0, 0, 0, 48416, 65151, 25138, 5632, 5784, 24516, 32767, 0, 58368,
1722 24511, 32767, 0, 64368, 24512, 32767, 0, 960, 24516, 32767, 0, 28, 0, 0, 0, 58352, 24511,
1723 32767, 0, 63382, 24512, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
1724 let mut counts: [u16; 12] = [0, 0, 0, 0, 2, 6, 25, 12, 15, 12, 80, 88];
1725 let end_counts: [u16; 12] = [0, 0, 0, 0, 2, 6, 25, 12, 15, 0, 0, 0];
1726 let mut table: [HuffmanCode; 436] = [HuffmanCode {
1727 bits: 0,
1728 value: 0,
1729 }; 436];
1730 let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
1731 assert_eq!(size, 436);
1732 assert_eq!(counts, end_counts);
1733 let end_table: [HuffmanCode; 436] = [HuffmanCode {
1734 bits: 4,
1735 value: 0,
1736 },
1737 HuffmanCode {
1738 bits: 6,
1739 value: 136,
1740 },
1741 HuffmanCode {
1742 bits: 5,
1743 value: 88,
1744 },
1745 HuffmanCode {
1746 bits: 7,
1747 value: 216,
1748 },
1749 HuffmanCode {
1750 bits: 5,
1751 value: 1,
1752 },
1753 HuffmanCode {
1754 bits: 6,
1755 value: 200,
1756 },
1757 HuffmanCode {
1758 bits: 6,
1759 value: 32,
1760 },
1761 HuffmanCode {
1762 bits: 9,
1763 value: 259,
1764 },
1765 HuffmanCode {
1766 bits: 4,
1767 value: 72,
1768 },
1769 HuffmanCode {
1770 bits: 6,
1771 value: 168,
1772 },
1773 HuffmanCode {
1774 bits: 6,
1775 value: 3,
1776 },
1777 HuffmanCode {
1778 bits: 8,
1779 value: 11,
1780 },
1781 HuffmanCode {
1782 bits: 5,
1783 value: 64,
1784 },
1785 HuffmanCode {
1786 bits: 6,
1787 value: 255,
1788 },
1789 HuffmanCode {
1790 bits: 6,
1791 value: 96,
1792 },
1793 HuffmanCode {
1794 bits: 10,
1795 value: 313,
1796 },
1797 HuffmanCode {
1798 bits: 4,
1799 value: 0,
1800 },
1801 HuffmanCode {
1802 bits: 6,
1803 value: 152,
1804 },
1805 HuffmanCode {
1806 bits: 5,
1807 value: 112,
1808 },
1809 HuffmanCode {
1810 bits: 7,
1811 value: 253,
1812 },
1813 HuffmanCode {
1814 bits: 5,
1815 value: 48,
1816 },
1817 HuffmanCode {
1818 bits: 6,
1819 value: 232,
1820 },
1821 HuffmanCode {
1822 bits: 6,
1823 value: 56,
1824 },
1825 HuffmanCode {
1826 bits: 10,
1827 value: 273,
1828 },
1829 HuffmanCode {
1830 bits: 4,
1831 value: 72,
1832 },
1833 HuffmanCode {
1834 bits: 6,
1835 value: 184,
1836 },
1837 HuffmanCode {
1838 bits: 6,
1839 value: 16,
1840 },
1841 HuffmanCode {
1842 bits: 8,
1843 value: 225,
1844 },
1845 HuffmanCode {
1846 bits: 5,
1847 value: 80,
1848 },
1849 HuffmanCode {
1850 bits: 7,
1851 value: 5,
1852 },
1853 HuffmanCode {
1854 bits: 6,
1855 value: 120,
1856 },
1857 HuffmanCode {
1858 bits: 11,
1859 value: 341,
1860 },
1861 HuffmanCode {
1862 bits: 4,
1863 value: 0,
1864 },
1865 HuffmanCode {
1866 bits: 6,
1867 value: 144,
1868 },
1869 HuffmanCode {
1870 bits: 5,
1871 value: 88,
1872 },
1873 HuffmanCode {
1874 bits: 7,
1875 value: 248,
1876 },
1877 HuffmanCode {
1878 bits: 5,
1879 value: 1,
1880 },
1881 HuffmanCode {
1882 bits: 6,
1883 value: 208,
1884 },
1885 HuffmanCode {
1886 bits: 6,
1887 value: 40,
1888 },
1889 HuffmanCode {
1890 bits: 10,
1891 value: 241,
1892 },
1893 HuffmanCode {
1894 bits: 4,
1895 value: 72,
1896 },
1897 HuffmanCode {
1898 bits: 6,
1899 value: 176,
1900 },
1901 HuffmanCode {
1902 bits: 6,
1903 value: 8,
1904 },
1905 HuffmanCode {
1906 bits: 8,
1907 value: 77,
1908 },
1909 HuffmanCode {
1910 bits: 5,
1911 value: 64,
1912 },
1913 HuffmanCode {
1914 bits: 7,
1915 value: 2,
1916 },
1917 HuffmanCode {
1918 bits: 6,
1919 value: 104,
1920 },
1921 HuffmanCode {
1922 bits: 10,
1923 value: 297,
1924 },
1925 HuffmanCode {
1926 bits: 4,
1927 value: 0,
1928 },
1929 HuffmanCode {
1930 bits: 6,
1931 value: 160,
1932 },
1933 HuffmanCode {
1934 bits: 5,
1935 value: 112,
1936 },
1937 HuffmanCode {
1938 bits: 8,
1939 value: 6,
1940 },
1941 HuffmanCode {
1942 bits: 5,
1943 value: 48,
1944 },
1945 HuffmanCode {
1946 bits: 6,
1947 value: 240,
1948 },
1949 HuffmanCode {
1950 bits: 6,
1951 value: 76,
1952 },
1953 HuffmanCode {
1954 bits: 10,
1955 value: 257,
1956 },
1957 HuffmanCode {
1958 bits: 4,
1959 value: 72,
1960 },
1961 HuffmanCode {
1962 bits: 6,
1963 value: 192,
1964 },
1965 HuffmanCode {
1966 bits: 6,
1967 value: 24,
1968 },
1969 HuffmanCode {
1970 bits: 9,
1971 value: 199,
1972 },
1973 HuffmanCode {
1974 bits: 5,
1975 value: 80,
1976 },
1977 HuffmanCode {
1978 bits: 7,
1979 value: 137,
1980 },
1981 HuffmanCode {
1982 bits: 6,
1983 value: 128,
1984 },
1985 HuffmanCode {
1986 bits: 11,
1987 value: 341,
1988 },
1989 HuffmanCode {
1990 bits: 4,
1991 value: 0,
1992 },
1993 HuffmanCode {
1994 bits: 6,
1995 value: 136,
1996 },
1997 HuffmanCode {
1998 bits: 5,
1999 value: 88,
2000 },
2001 HuffmanCode {
2002 bits: 7,
2003 value: 224,
2004 },
2005 HuffmanCode {
2006 bits: 5,
2007 value: 1,
2008 },
2009 HuffmanCode {
2010 bits: 6,
2011 value: 200,
2012 },
2013 HuffmanCode {
2014 bits: 6,
2015 value: 32,
2016 },
2017 HuffmanCode {
2018 bits: 10,
2019 value: 201,
2020 },
2021 HuffmanCode {
2022 bits: 4,
2023 value: 72,
2024 },
2025 HuffmanCode {
2026 bits: 6,
2027 value: 168,
2028 },
2029 HuffmanCode {
2030 bits: 6,
2031 value: 3,
2032 },
2033 HuffmanCode {
2034 bits: 8,
2035 value: 13,
2036 },
2037 HuffmanCode {
2038 bits: 5,
2039 value: 64,
2040 },
2041 HuffmanCode {
2042 bits: 6,
2043 value: 255,
2044 },
2045 HuffmanCode {
2046 bits: 6,
2047 value: 96,
2048 },
2049 HuffmanCode {
2050 bits: 10,
2051 value: 257,
2052 },
2053 HuffmanCode {
2054 bits: 4,
2055 value: 0,
2056 },
2057 HuffmanCode {
2058 bits: 6,
2059 value: 152,
2060 },
2061 HuffmanCode {
2062 bits: 5,
2063 value: 112,
2064 },
2065 HuffmanCode {
2066 bits: 7,
2067 value: 254,
2068 },
2069 HuffmanCode {
2070 bits: 5,
2071 value: 48,
2072 },
2073 HuffmanCode {
2074 bits: 6,
2075 value: 232,
2076 },
2077 HuffmanCode {
2078 bits: 6,
2079 value: 56,
2080 },
2081 HuffmanCode {
2082 bits: 10,
2083 value: 217,
2084 },
2085 HuffmanCode {
2086 bits: 4,
2087 value: 72,
2088 },
2089 HuffmanCode {
2090 bits: 6,
2091 value: 184,
2092 },
2093 HuffmanCode {
2094 bits: 6,
2095 value: 16,
2096 },
2097 HuffmanCode {
2098 bits: 8,
2099 value: 247,
2100 },
2101 HuffmanCode {
2102 bits: 5,
2103 value: 80,
2104 },
2105 HuffmanCode {
2106 bits: 7,
2107 value: 73,
2108 },
2109 HuffmanCode {
2110 bits: 6,
2111 value: 120,
2112 },
2113 HuffmanCode {
2114 bits: 11,
2115 value: 293,
2116 },
2117 HuffmanCode {
2118 bits: 4,
2119 value: 0,
2120 },
2121 HuffmanCode {
2122 bits: 6,
2123 value: 144,
2124 },
2125 HuffmanCode {
2126 bits: 5,
2127 value: 88,
2128 },
2129 HuffmanCode {
2130 bits: 7,
2131 value: 252,
2132 },
2133 HuffmanCode {
2134 bits: 5,
2135 value: 1,
2136 },
2137 HuffmanCode {
2138 bits: 6,
2139 value: 208,
2140 },
2141 HuffmanCode {
2142 bits: 6,
2143 value: 40,
2144 },
2145 HuffmanCode {
2146 bits: 10,
2147 value: 185,
2148 },
2149 HuffmanCode {
2150 bits: 4,
2151 value: 72,
2152 },
2153 HuffmanCode {
2154 bits: 6,
2155 value: 176,
2156 },
2157 HuffmanCode {
2158 bits: 6,
2159 value: 8,
2160 },
2161 HuffmanCode {
2162 bits: 8,
2163 value: 116,
2164 },
2165 HuffmanCode {
2166 bits: 5,
2167 value: 64,
2168 },
2169 HuffmanCode {
2170 bits: 7,
2171 value: 4,
2172 },
2173 HuffmanCode {
2174 bits: 6,
2175 value: 104,
2176 },
2177 HuffmanCode {
2178 bits: 11,
2179 value: 245,
2180 },
2181 HuffmanCode {
2182 bits: 4,
2183 value: 0,
2184 },
2185 HuffmanCode {
2186 bits: 6,
2187 value: 160,
2188 },
2189 HuffmanCode {
2190 bits: 5,
2191 value: 112,
2192 },
2193 HuffmanCode {
2194 bits: 8,
2195 value: 9,
2196 },
2197 HuffmanCode {
2198 bits: 5,
2199 value: 48,
2200 },
2201 HuffmanCode {
2202 bits: 6,
2203 value: 240,
2204 },
2205 HuffmanCode {
2206 bits: 6,
2207 value: 76,
2208 },
2209 HuffmanCode {
2210 bits: 10,
2211 value: 201,
2212 },
2213 HuffmanCode {
2214 bits: 4,
2215 value: 72,
2216 },
2217 HuffmanCode {
2218 bits: 6,
2219 value: 192,
2220 },
2221 HuffmanCode {
2222 bits: 6,
2223 value: 24,
2224 },
2225 HuffmanCode {
2226 bits: 9,
2227 value: 139,
2228 },
2229 HuffmanCode {
2230 bits: 5,
2231 value: 80,
2232 },
2233 HuffmanCode {
2234 bits: 7,
2235 value: 139,
2236 },
2237 HuffmanCode {
2238 bits: 6,
2239 value: 128,
2240 },
2241 HuffmanCode {
2242 bits: 11,
2243 value: 293,
2244 },
2245 HuffmanCode {
2246 bits: 4,
2247 value: 0,
2248 },
2249 HuffmanCode {
2250 bits: 6,
2251 value: 136,
2252 },
2253 HuffmanCode {
2254 bits: 5,
2255 value: 88,
2256 },
2257 HuffmanCode {
2258 bits: 7,
2259 value: 216,
2260 },
2261 HuffmanCode {
2262 bits: 5,
2263 value: 1,
2264 },
2265 HuffmanCode {
2266 bits: 6,
2267 value: 200,
2268 },
2269 HuffmanCode {
2270 bits: 6,
2271 value: 32,
2272 },
2273 HuffmanCode {
2274 bits: 10,
2275 value: 133,
2276 },
2277 HuffmanCode {
2278 bits: 4,
2279 value: 72,
2280 },
2281 HuffmanCode {
2282 bits: 6,
2283 value: 168,
2284 },
2285 HuffmanCode {
2286 bits: 6,
2287 value: 3,
2288 },
2289 HuffmanCode {
2290 bits: 8,
2291 value: 12,
2292 },
2293 HuffmanCode {
2294 bits: 5,
2295 value: 64,
2296 },
2297 HuffmanCode {
2298 bits: 6,
2299 value: 255,
2300 },
2301 HuffmanCode {
2302 bits: 6,
2303 value: 96,
2304 },
2305 HuffmanCode {
2306 bits: 10,
2307 value: 189,
2308 },
2309 HuffmanCode {
2310 bits: 4,
2311 value: 0,
2312 },
2313 HuffmanCode {
2314 bits: 6,
2315 value: 152,
2316 },
2317 HuffmanCode {
2318 bits: 5,
2319 value: 112,
2320 },
2321 HuffmanCode {
2322 bits: 7,
2323 value: 253,
2324 },
2325 HuffmanCode {
2326 bits: 5,
2327 value: 48,
2328 },
2329 HuffmanCode {
2330 bits: 6,
2331 value: 232,
2332 },
2333 HuffmanCode {
2334 bits: 6,
2335 value: 56,
2336 },
2337 HuffmanCode {
2338 bits: 10,
2339 value: 149,
2340 },
2341 HuffmanCode {
2342 bits: 4,
2343 value: 72,
2344 },
2345 HuffmanCode {
2346 bits: 6,
2347 value: 184,
2348 },
2349 HuffmanCode {
2350 bits: 6,
2351 value: 16,
2352 },
2353 HuffmanCode {
2354 bits: 8,
2355 value: 233,
2356 },
2357 HuffmanCode {
2358 bits: 5,
2359 value: 80,
2360 },
2361 HuffmanCode {
2362 bits: 7,
2363 value: 5,
2364 },
2365 HuffmanCode {
2366 bits: 6,
2367 value: 120,
2368 },
2369 HuffmanCode {
2370 bits: 11,
2371 value: 221,
2372 },
2373 HuffmanCode {
2374 bits: 4,
2375 value: 0,
2376 },
2377 HuffmanCode {
2378 bits: 6,
2379 value: 144,
2380 },
2381 HuffmanCode {
2382 bits: 5,
2383 value: 88,
2384 },
2385 HuffmanCode {
2386 bits: 7,
2387 value: 248,
2388 },
2389 HuffmanCode {
2390 bits: 5,
2391 value: 1,
2392 },
2393 HuffmanCode {
2394 bits: 6,
2395 value: 208,
2396 },
2397 HuffmanCode {
2398 bits: 6,
2399 value: 40,
2400 },
2401 HuffmanCode {
2402 bits: 10,
2403 value: 117,
2404 },
2405 HuffmanCode {
2406 bits: 4,
2407 value: 72,
2408 },
2409 HuffmanCode {
2410 bits: 6,
2411 value: 176,
2412 },
2413 HuffmanCode {
2414 bits: 6,
2415 value: 8,
2416 },
2417 HuffmanCode {
2418 bits: 8,
2419 value: 102,
2420 },
2421 HuffmanCode {
2422 bits: 5,
2423 value: 64,
2424 },
2425 HuffmanCode {
2426 bits: 7,
2427 value: 2,
2428 },
2429 HuffmanCode {
2430 bits: 6,
2431 value: 104,
2432 },
2433 HuffmanCode {
2434 bits: 11,
2435 value: 173,
2436 },
2437 HuffmanCode {
2438 bits: 4,
2439 value: 0,
2440 },
2441 HuffmanCode {
2442 bits: 6,
2443 value: 160,
2444 },
2445 HuffmanCode {
2446 bits: 5,
2447 value: 112,
2448 },
2449 HuffmanCode {
2450 bits: 8,
2451 value: 7,
2452 },
2453 HuffmanCode {
2454 bits: 5,
2455 value: 48,
2456 },
2457 HuffmanCode {
2458 bits: 6,
2459 value: 240,
2460 },
2461 HuffmanCode {
2462 bits: 6,
2463 value: 76,
2464 },
2465 HuffmanCode {
2466 bits: 10,
2467 value: 133,
2468 },
2469 HuffmanCode {
2470 bits: 4,
2471 value: 72,
2472 },
2473 HuffmanCode {
2474 bits: 6,
2475 value: 192,
2476 },
2477 HuffmanCode {
2478 bits: 6,
2479 value: 24,
2480 },
2481 HuffmanCode {
2482 bits: 9,
2483 value: 73,
2484 },
2485 HuffmanCode {
2486 bits: 5,
2487 value: 80,
2488 },
2489 HuffmanCode {
2490 bits: 7,
2491 value: 137,
2492 },
2493 HuffmanCode {
2494 bits: 6,
2495 value: 128,
2496 },
2497 HuffmanCode {
2498 bits: 11,
2499 value: 221,
2500 },
2501 HuffmanCode {
2502 bits: 4,
2503 value: 0,
2504 },
2505 HuffmanCode {
2506 bits: 6,
2507 value: 136,
2508 },
2509 HuffmanCode {
2510 bits: 5,
2511 value: 88,
2512 },
2513 HuffmanCode {
2514 bits: 7,
2515 value: 224,
2516 },
2517 HuffmanCode {
2518 bits: 5,
2519 value: 1,
2520 },
2521 HuffmanCode {
2522 bits: 6,
2523 value: 200,
2524 },
2525 HuffmanCode {
2526 bits: 6,
2527 value: 32,
2528 },
2529 HuffmanCode {
2530 bits: 10,
2531 value: 77,
2532 },
2533 HuffmanCode {
2534 bits: 4,
2535 value: 72,
2536 },
2537 HuffmanCode {
2538 bits: 6,
2539 value: 168,
2540 },
2541 HuffmanCode {
2542 bits: 6,
2543 value: 3,
2544 },
2545 HuffmanCode {
2546 bits: 8,
2547 value: 20,
2548 },
2549 HuffmanCode {
2550 bits: 5,
2551 value: 64,
2552 },
2553 HuffmanCode {
2554 bits: 6,
2555 value: 255,
2556 },
2557 HuffmanCode {
2558 bits: 6,
2559 value: 96,
2560 },
2561 HuffmanCode {
2562 bits: 10,
2563 value: 133,
2564 },
2565 HuffmanCode {
2566 bits: 4,
2567 value: 0,
2568 },
2569 HuffmanCode {
2570 bits: 6,
2571 value: 152,
2572 },
2573 HuffmanCode {
2574 bits: 5,
2575 value: 112,
2576 },
2577 HuffmanCode {
2578 bits: 7,
2579 value: 254,
2580 },
2581 HuffmanCode {
2582 bits: 5,
2583 value: 48,
2584 },
2585 HuffmanCode {
2586 bits: 6,
2587 value: 232,
2588 },
2589 HuffmanCode {
2590 bits: 6,
2591 value: 56,
2592 },
2593 HuffmanCode {
2594 bits: 10,
2595 value: 93,
2596 },
2597 HuffmanCode {
2598 bits: 4,
2599 value: 72,
2600 },
2601 HuffmanCode {
2602 bits: 6,
2603 value: 184,
2604 },
2605 HuffmanCode {
2606 bits: 6,
2607 value: 16,
2608 },
2609 HuffmanCode {
2610 bits: 9,
2611 value: 37,
2612 },
2613 HuffmanCode {
2614 bits: 5,
2615 value: 80,
2616 },
2617 HuffmanCode {
2618 bits: 7,
2619 value: 73,
2620 },
2621 HuffmanCode {
2622 bits: 6,
2623 value: 120,
2624 },
2625 HuffmanCode {
2626 bits: 11,
2627 value: 173,
2628 },
2629 HuffmanCode {
2630 bits: 4,
2631 value: 0,
2632 },
2633 HuffmanCode {
2634 bits: 6,
2635 value: 144,
2636 },
2637 HuffmanCode {
2638 bits: 5,
2639 value: 88,
2640 },
2641 HuffmanCode {
2642 bits: 7,
2643 value: 252,
2644 },
2645 HuffmanCode {
2646 bits: 5,
2647 value: 1,
2648 },
2649 HuffmanCode {
2650 bits: 6,
2651 value: 208,
2652 },
2653 HuffmanCode {
2654 bits: 6,
2655 value: 40,
2656 },
2657 HuffmanCode {
2658 bits: 10,
2659 value: 61,
2660 },
2661 HuffmanCode {
2662 bits: 4,
2663 value: 72,
2664 },
2665 HuffmanCode {
2666 bits: 6,
2667 value: 176,
2668 },
2669 HuffmanCode {
2670 bits: 6,
2671 value: 8,
2672 },
2673 HuffmanCode {
2674 bits: 8,
2675 value: 170,
2676 },
2677 HuffmanCode {
2678 bits: 5,
2679 value: 64,
2680 },
2681 HuffmanCode {
2682 bits: 7,
2683 value: 4,
2684 },
2685 HuffmanCode {
2686 bits: 6,
2687 value: 104,
2688 },
2689 HuffmanCode {
2690 bits: 11,
2691 value: 125,
2692 },
2693 HuffmanCode {
2694 bits: 4,
2695 value: 0,
2696 },
2697 HuffmanCode {
2698 bits: 6,
2699 value: 160,
2700 },
2701 HuffmanCode {
2702 bits: 5,
2703 value: 112,
2704 },
2705 HuffmanCode {
2706 bits: 8,
2707 value: 10,
2708 },
2709 HuffmanCode {
2710 bits: 5,
2711 value: 48,
2712 },
2713 HuffmanCode {
2714 bits: 6,
2715 value: 240,
2716 },
2717 HuffmanCode {
2718 bits: 6,
2719 value: 76,
2720 },
2721 HuffmanCode {
2722 bits: 10,
2723 value: 77,
2724 },
2725 HuffmanCode {
2726 bits: 4,
2727 value: 72,
2728 },
2729 HuffmanCode {
2730 bits: 6,
2731 value: 192,
2732 },
2733 HuffmanCode {
2734 bits: 6,
2735 value: 24,
2736 },
2737 HuffmanCode {
2738 bits: 9,
2739 value: 13,
2740 },
2741 HuffmanCode {
2742 bits: 5,
2743 value: 80,
2744 },
2745 HuffmanCode {
2746 bits: 7,
2747 value: 139,
2748 },
2749 HuffmanCode {
2750 bits: 6,
2751 value: 128,
2752 },
2753 HuffmanCode {
2754 bits: 11,
2755 value: 173,
2756 },
2757 HuffmanCode {
2758 bits: 1,
2759 value: 14,
2760 },
2761 HuffmanCode {
2762 bits: 1,
2763 value: 15,
2764 },
2765 HuffmanCode {
2766 bits: 1,
2767 value: 47,
2768 },
2769 HuffmanCode {
2770 bits: 1,
2771 value: 65,
2772 },
2773 HuffmanCode {
2774 bits: 1,
2775 value: 66,
2776 },
2777 HuffmanCode {
2778 bits: 1,
2779 value: 67,
2780 },
2781 HuffmanCode {
2782 bits: 1,
2783 value: 68,
2784 },
2785 HuffmanCode {
2786 bits: 1,
2787 value: 69,
2788 },
2789 HuffmanCode {
2790 bits: 1,
2791 value: 78,
2792 },
2793 HuffmanCode {
2794 bits: 1,
2795 value: 138,
2796 },
2797 HuffmanCode {
2798 bits: 1,
2799 value: 191,
2800 },
2801 HuffmanCode {
2802 bits: 1,
2803 value: 251,
2804 },
2805 HuffmanCode {
2806 bits: 2,
2807 value: 17,
2808 },
2809 HuffmanCode {
2810 bits: 2,
2811 value: 25,
2812 },
2813 HuffmanCode {
2814 bits: 2,
2815 value: 22,
2816 },
2817 HuffmanCode {
2818 bits: 2,
2819 value: 26,
2820 },
2821 HuffmanCode {
2822 bits: 2,
2823 value: 27,
2824 },
2825 HuffmanCode {
2826 bits: 2,
2827 value: 29,
2828 },
2829 HuffmanCode {
2830 bits: 2,
2831 value: 28,
2832 },
2833 HuffmanCode {
2834 bits: 2,
2835 value: 30,
2836 },
2837 HuffmanCode {
2838 bits: 2,
2839 value: 31,
2840 },
2841 HuffmanCode {
2842 bits: 2,
2843 value: 34,
2844 },
2845 HuffmanCode {
2846 bits: 2,
2847 value: 33,
2848 },
2849 HuffmanCode {
2850 bits: 2,
2851 value: 35,
2852 },
2853 HuffmanCode {
2854 bits: 2,
2855 value: 36,
2856 },
2857 HuffmanCode {
2858 bits: 2,
2859 value: 38,
2860 },
2861 HuffmanCode {
2862 bits: 2,
2863 value: 37,
2864 },
2865 HuffmanCode {
2866 bits: 2,
2867 value: 39,
2868 },
2869 HuffmanCode {
2870 bits: 2,
2871 value: 49,
2872 },
2873 HuffmanCode {
2874 bits: 2,
2875 value: 51,
2876 },
2877 HuffmanCode {
2878 bits: 2,
2879 value: 50,
2880 },
2881 HuffmanCode {
2882 bits: 2,
2883 value: 52,
2884 },
2885 HuffmanCode {
2886 bits: 2,
2887 value: 53,
2888 },
2889 HuffmanCode {
2890 bits: 2,
2891 value: 55,
2892 },
2893 HuffmanCode {
2894 bits: 2,
2895 value: 54,
2896 },
2897 HuffmanCode {
2898 bits: 2,
2899 value: 71,
2900 },
2901 HuffmanCode {
2902 bits: 2,
2903 value: 75,
2904 },
2905 HuffmanCode {
2906 bits: 2,
2907 value: 82,
2908 },
2909 HuffmanCode {
2910 bits: 2,
2911 value: 81,
2912 },
2913 HuffmanCode {
2914 bits: 2,
2915 value: 83,
2916 },
2917 HuffmanCode {
2918 bits: 2,
2919 value: 84,
2920 },
2921 HuffmanCode {
2922 bits: 2,
2923 value: 86,
2924 },
2925 HuffmanCode {
2926 bits: 2,
2927 value: 85,
2928 },
2929 HuffmanCode {
2930 bits: 2,
2931 value: 87,
2932 },
2933 HuffmanCode {
2934 bits: 2,
2935 value: 89,
2936 },
2937 HuffmanCode {
2938 bits: 2,
2939 value: 91,
2940 },
2941 HuffmanCode {
2942 bits: 2,
2943 value: 90,
2944 },
2945 HuffmanCode {
2946 bits: 2,
2947 value: 92,
2948 },
2949 HuffmanCode {
2950 bits: 2,
2951 value: 93,
2952 },
2953 HuffmanCode {
2954 bits: 2,
2955 value: 95,
2956 },
2957 HuffmanCode {
2958 bits: 2,
2959 value: 94,
2960 },
2961 HuffmanCode {
2962 bits: 2,
2963 value: 117,
2964 },
2965 HuffmanCode {
2966 bits: 2,
2967 value: 129,
2968 },
2969 HuffmanCode {
2970 bits: 2,
2971 value: 131,
2972 },
2973 HuffmanCode {
2974 bits: 2,
2975 value: 130,
2976 },
2977 HuffmanCode {
2978 bits: 2,
2979 value: 132,
2980 },
2981 HuffmanCode {
2982 bits: 2,
2983 value: 133,
2984 },
2985 HuffmanCode {
2986 bits: 2,
2987 value: 135,
2988 },
2989 HuffmanCode {
2990 bits: 2,
2991 value: 134,
2992 },
2993 HuffmanCode {
2994 bits: 2,
2995 value: 140,
2996 },
2997 HuffmanCode {
2998 bits: 2,
2999 value: 141,
3000 },
3001 HuffmanCode {
3002 bits: 2,
3003 value: 143,
3004 },
3005 HuffmanCode {
3006 bits: 2,
3007 value: 142,
3008 },
3009 HuffmanCode {
3010 bits: 2,
3011 value: 169,
3012 },
3013 HuffmanCode {
3014 bits: 2,
3015 value: 193,
3016 },
3017 HuffmanCode {
3018 bits: 2,
3019 value: 195,
3020 },
3021 HuffmanCode {
3022 bits: 2,
3023 value: 194,
3024 },
3025 HuffmanCode {
3026 bits: 2,
3027 value: 196,
3028 },
3029 HuffmanCode {
3030 bits: 2,
3031 value: 197,
3032 },
3033 HuffmanCode {
3034 bits: 2,
3035 value: 199,
3036 },
3037 HuffmanCode {
3038 bits: 2,
3039 value: 198,
3040 },
3041 HuffmanCode {
3042 bits: 2,
3043 value: 201,
3044 },
3045 HuffmanCode {
3046 bits: 2,
3047 value: 202,
3048 },
3049 HuffmanCode {
3050 bits: 2,
3051 value: 204,
3052 },
3053 HuffmanCode {
3054 bits: 2,
3055 value: 203,
3056 },
3057 HuffmanCode {
3058 bits: 2,
3059 value: 205,
3060 },
3061 HuffmanCode {
3062 bits: 2,
3063 value: 206,
3064 },
3065 HuffmanCode {
3066 bits: 2,
3067 value: 217,
3068 },
3069 HuffmanCode {
3070 bits: 2,
3071 value: 207,
3072 },
3073 HuffmanCode {
3074 bits: 2,
3075 value: 218,
3076 },
3077 HuffmanCode {
3078 bits: 2,
3079 value: 219,
3080 },
3081 HuffmanCode {
3082 bits: 2,
3083 value: 221,
3084 },
3085 HuffmanCode {
3086 bits: 2,
3087 value: 220,
3088 },
3089 HuffmanCode {
3090 bits: 2,
3091 value: 222,
3092 },
3093 HuffmanCode {
3094 bits: 2,
3095 value: 223,
3096 },
3097 HuffmanCode {
3098 bits: 2,
3099 value: 242,
3100 },
3101 HuffmanCode {
3102 bits: 2,
3103 value: 241,
3104 },
3105 HuffmanCode {
3106 bits: 2,
3107 value: 243,
3108 },
3109 HuffmanCode {
3110 bits: 2,
3111 value: 244,
3112 },
3113 HuffmanCode {
3114 bits: 2,
3115 value: 246,
3116 },
3117 HuffmanCode {
3118 bits: 2,
3119 value: 245,
3120 },
3121 HuffmanCode {
3122 bits: 2,
3123 value: 250,
3124 },
3125 HuffmanCode {
3126 bits: 3,
3127 value: 21,
3128 },
3129 HuffmanCode {
3130 bits: 3,
3131 value: 44,
3132 },
3133 HuffmanCode {
3134 bits: 3,
3135 value: 42,
3136 },
3137 HuffmanCode {
3138 bits: 3,
3139 value: 46,
3140 },
3141 HuffmanCode {
3142 bits: 3,
3143 value: 41,
3144 },
3145 HuffmanCode {
3146 bits: 3,
3147 value: 45,
3148 },
3149 HuffmanCode {
3150 bits: 3,
3151 value: 43,
3152 },
3153 HuffmanCode {
3154 bits: 3,
3155 value: 57,
3156 },
3157 HuffmanCode {
3158 bits: 3,
3159 value: 58,
3160 },
3161 HuffmanCode {
3162 bits: 3,
3163 value: 62,
3164 },
3165 HuffmanCode {
3166 bits: 3,
3167 value: 60,
3168 },
3169 HuffmanCode {
3170 bits: 3,
3171 value: 97,
3172 },
3173 HuffmanCode {
3174 bits: 3,
3175 value: 59,
3176 },
3177 HuffmanCode {
3178 bits: 3,
3179 value: 63,
3180 },
3181 HuffmanCode {
3182 bits: 3,
3183 value: 61,
3184 },
3185 HuffmanCode {
3186 bits: 3,
3187 value: 98,
3188 },
3189 HuffmanCode {
3190 bits: 3,
3191 value: 99,
3192 },
3193 HuffmanCode {
3194 bits: 3,
3195 value: 106,
3196 },
3197 HuffmanCode {
3198 bits: 3,
3199 value: 101,
3200 },
3201 HuffmanCode {
3202 bits: 3,
3203 value: 108,
3204 },
3205 HuffmanCode {
3206 bits: 3,
3207 value: 100,
3208 },
3209 HuffmanCode {
3210 bits: 3,
3211 value: 107,
3212 },
3213 HuffmanCode {
3214 bits: 3,
3215 value: 105,
3216 },
3217 HuffmanCode {
3218 bits: 3,
3219 value: 109,
3220 },
3221 HuffmanCode {
3222 bits: 3,
3223 value: 110,
3224 },
3225 HuffmanCode {
3226 bits: 3,
3227 value: 122,
3228 },
3229 HuffmanCode {
3230 bits: 3,
3231 value: 118,
3232 },
3233 HuffmanCode {
3234 bits: 3,
3235 value: 124,
3236 },
3237 HuffmanCode {
3238 bits: 3,
3239 value: 111,
3240 },
3241 HuffmanCode {
3242 bits: 3,
3243 value: 123,
3244 },
3245 HuffmanCode {
3246 bits: 3,
3247 value: 121,
3248 },
3249 HuffmanCode {
3250 bits: 3,
3251 value: 125,
3252 },
3253 HuffmanCode {
3254 bits: 3,
3255 value: 126,
3256 },
3257 HuffmanCode {
3258 bits: 3,
3259 value: 147,
3260 },
3261 HuffmanCode {
3262 bits: 3,
3263 value: 145,
3264 },
3265 HuffmanCode {
3266 bits: 3,
3267 value: 149,
3268 },
3269 HuffmanCode {
3270 bits: 3,
3271 value: 127,
3272 },
3273 HuffmanCode {
3274 bits: 3,
3275 value: 148,
3276 },
3277 HuffmanCode {
3278 bits: 3,
3279 value: 146,
3280 },
3281 HuffmanCode {
3282 bits: 3,
3283 value: 150,
3284 },
3285 HuffmanCode {
3286 bits: 3,
3287 value: 151,
3288 },
3289 HuffmanCode {
3290 bits: 3,
3291 value: 156,
3292 },
3293 HuffmanCode {
3294 bits: 3,
3295 value: 154,
3296 },
3297 HuffmanCode {
3298 bits: 3,
3299 value: 158,
3300 },
3301 HuffmanCode {
3302 bits: 3,
3303 value: 153,
3304 },
3305 HuffmanCode {
3306 bits: 3,
3307 value: 157,
3308 },
3309 HuffmanCode {
3310 bits: 3,
3311 value: 155,
3312 },
3313 HuffmanCode {
3314 bits: 3,
3315 value: 159,
3316 },
3317 HuffmanCode {
3318 bits: 3,
3319 value: 161,
3320 },
3321 HuffmanCode {
3322 bits: 3,
3323 value: 165,
3324 },
3325 HuffmanCode {
3326 bits: 3,
3327 value: 163,
3328 },
3329 HuffmanCode {
3330 bits: 3,
3331 value: 167,
3332 },
3333 HuffmanCode {
3334 bits: 3,
3335 value: 162,
3336 },
3337 HuffmanCode {
3338 bits: 3,
3339 value: 166,
3340 },
3341 HuffmanCode {
3342 bits: 3,
3343 value: 164,
3344 },
3345 HuffmanCode {
3346 bits: 3,
3347 value: 171,
3348 },
3349 HuffmanCode {
3350 bits: 3,
3351 value: 177,
3352 },
3353 HuffmanCode {
3354 bits: 3,
3355 value: 181,
3356 },
3357 HuffmanCode {
3358 bits: 3,
3359 value: 179,
3360 },
3361 HuffmanCode {
3362 bits: 3,
3363 value: 183,
3364 },
3365 HuffmanCode {
3366 bits: 3,
3367 value: 178,
3368 },
3369 HuffmanCode {
3370 bits: 3,
3371 value: 182,
3372 },
3373 HuffmanCode {
3374 bits: 3,
3375 value: 180,
3376 },
3377 HuffmanCode {
3378 bits: 3,
3379 value: 185,
3380 },
3381 HuffmanCode {
3382 bits: 3,
3383 value: 186,
3384 },
3385 HuffmanCode {
3386 bits: 3,
3387 value: 190,
3388 },
3389 HuffmanCode {
3390 bits: 3,
3391 value: 188,
3392 },
3393 HuffmanCode {
3394 bits: 3,
3395 value: 210,
3396 },
3397 HuffmanCode {
3398 bits: 3,
3399 value: 187,
3400 },
3401 HuffmanCode {
3402 bits: 3,
3403 value: 209,
3404 },
3405 HuffmanCode {
3406 bits: 3,
3407 value: 189,
3408 },
3409 HuffmanCode {
3410 bits: 3,
3411 value: 211,
3412 },
3413 HuffmanCode {
3414 bits: 3,
3415 value: 212,
3416 },
3417 HuffmanCode {
3418 bits: 3,
3419 value: 226,
3420 },
3421 HuffmanCode {
3422 bits: 3,
3423 value: 214,
3424 },
3425 HuffmanCode {
3426 bits: 3,
3427 value: 228,
3428 },
3429 HuffmanCode {
3430 bits: 3,
3431 value: 213,
3432 },
3433 HuffmanCode {
3434 bits: 3,
3435 value: 227,
3436 },
3437 HuffmanCode {
3438 bits: 3,
3439 value: 215,
3440 },
3441 HuffmanCode {
3442 bits: 3,
3443 value: 229,
3444 },
3445 HuffmanCode {
3446 bits: 3,
3447 value: 230,
3448 },
3449 HuffmanCode {
3450 bits: 3,
3451 value: 236,
3452 },
3453 HuffmanCode {
3454 bits: 3,
3455 value: 234,
3456 },
3457 HuffmanCode {
3458 bits: 3,
3459 value: 238,
3460 },
3461 HuffmanCode {
3462 bits: 3,
3463 value: 231,
3464 },
3465 HuffmanCode {
3466 bits: 3,
3467 value: 237,
3468 },
3469 HuffmanCode {
3470 bits: 3,
3471 value: 235,
3472 },
3473 HuffmanCode {
3474 bits: 3,
3475 value: 239,
3476 }];
3477 for index in 0..end_table.len() {
3478 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
3479 [index, end_table[index].bits as usize, end_table[index].value as usize]);
3480 assert!(table[index] == end_table[index]);
3481 }
3482
3483}
3484#[test]
3485fn singlelevel() {
3486 let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
3487 BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
3488 [65535, 65535, 65535, 137, 0, 16, 2, 17, 33, 65535, 65535, 65535, 65535, 65535, 65535, 65535,
3489 1, 253, 3, 4, 5, 6, 7, 8, 9, 10, 65, 12, 13, 14, 24, 72, 32, 31, 19, 20, 21, 22, 23, 57, 26,
3490 26, 32, 28, 29, 30, 31, 249, 184, 34, 35, 36, 37, 38, 39, 40, 48, 42, 43, 44, 45, 46, 47, 58,
3491 49, 50, 51, 52, 53, 54, 55, 56, 72, 58, 59, 60, 61, 62, 63, 64, 65, 130, 67, 68, 69, 70, 71,
3492 77, 129, 76, 193, 192, 200, 78, 79, 80, 81, 82, 83, 84, 90, 86, 87, 88, 89, 90, 102, 92, 118,
3493 94, 95, 96, 97, 98, 99, 100, 101, 103, 103, 104, 105, 106, 107, 108, 115, 110, 111, 112, 113,
3494 114, 115, 127, 117, 253, 119, 120, 121, 122, 123, 124, 140, 204, 127, 128, 129, 131, 156,
3495 138, 133, 134, 135, 136, 137, 255, 139, 140, 141, 150, 143, 144, 145, 146, 147, 148, 149,
3496 150, 152, 152, 159, 154, 155, 156, 208, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
3497 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 192,
3498 194, 187, 188, 213, 190, 197, 196, 200, 195, 195, 196, 197, 198, 199, 200, 235, 202, 203,
3499 204, 205, 206, 207, 208, 209, 224, 212, 222, 218, 236, 215, 216, 217, 240, 219, 220, 221,
3500 225, 223, 224, 225, 226, 227, 228, 236, 230, 231, 232, 233, 234, 241, 254, 237, 238, 239,
3501 240, 248, 244, 243, 246, 250, 246, 247, 251, 249, 250, 251, 252, 253, 254, 255, 0, 23040,
3502 3500, 1, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 38400, 3500, 1, 0, 61712,
3503 21033, 32767, 0, 60189, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
3504 51712, 3501, 1, 0, 15360, 0, 0, 0, 1536, 3502, 1, 0, 8192, 3500, 1, 0, 61792, 21033, 32767,
3505 0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 38400, 3500, 1, 0, 0, 0, 0,
3506 0, 256, 0, 0, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 61792, 21033, 32767, 0, 18208, 35059, 32767,
3507 0, 4102, 0, 0, 65408, 65535, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
3508 32768, 54143, 32705, 0, 0, 54016, 32705, 0, 0, 54016, 32705, 0, 3584, 0, 0, 0, 6, 0, 0,
3509 65408, 7, 3502, 32767, 0, 8192, 3500, 1, 0, 0, 54016, 32705, 0, 1, 0, 0, 0, 8192, 3500, 1, 0,
3510 12288, 54016, 32705, 0, 8192, 54016, 32705, 0, 61888, 21033, 32767, 0, 14237, 35059, 32767,
3511 0, 88, 53952, 32705, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 54016, 32705, 0, 8192, 3500, 1, 0,
3512 8192, 3500, 1, 0, 62016, 21033, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 8192, 3500,
3513 1, 0, 61936, 21033, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0,
3514 0, 0, 0, 44144, 37434, 32767, 0, 19984, 53952, 32705, 0, 0, 0, 0, 0, 62076, 21033, 32767, 0,
3515 62080, 21033, 32767, 0, 62084, 21033, 32767, 0, 64, 53952, 32705, 0, 65535, 65535, 65535,
3516 65535, 64, 0, 8296, 1, 62032, 21033, 32767, 0, 16900, 27601, 32767, 0, 18096, 27604, 32767,
3517 0, 0, 0, 0, 0, 62080, 21033, 32767, 0, 17447, 27601, 32767, 0, 62080, 21033, 32767, 0, 17246,
3518 27601, 32767, 0, 0, 0, 0, 0, 62784, 36821, 32767, 0, 62144, 21033, 32767, 0, 4085, 27601,
3519 32767, 0, 44624, 27603, 32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 46488,
3520 27603, 32767, 0, 18096, 27604, 32767, 0, 0, 0, 0, 0, 62256, 21033, 32767, 0, 23819, 27601,
3521 32767, 0, 62288, 21033, 32767, 0, 20326, 27600, 32767, 0, 15584, 36820, 32767, 0, 15096,
3522 36820, 32767, 0, 12288, 36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 18096,
3523 27604, 32767, 0, 62400, 21033, 32767, 0, 1299, 0, 0, 0, 51315, 34237, 23510, 56320, 18096,
3524 27604, 32767, 0, 62400, 21033, 32767, 0, 11120, 27601, 32767, 0, 13272, 27604, 32767, 0, 28,
3525 0, 0, 0, 62384, 21033, 32767, 0, 10134, 27601, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
3526 let mut counts: [u16; 9] = [0, 0, 0, 2, 3, 7, 13, 6, 24];
3527 let end_counts: [u16; 9] = [0, 0, 0, 2, 3, 7, 13, 6, 24];
3528 let mut table: [HuffmanCode; 260] = [HuffmanCode {
3529 bits: 0,
3530 value: 0,
3531 }; 260];
3532 let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
3533 assert_eq!(size, 256);
3534 assert_eq!(counts, end_counts);
3535 let end_table: [HuffmanCode; 260] = [HuffmanCode {
3536 bits: 3,
3537 value: 137,
3538 },
3539 HuffmanCode {
3540 bits: 5,
3541 value: 184,
3542 },
3543 HuffmanCode {
3544 bits: 4,
3545 value: 0,
3546 },
3547 HuffmanCode {
3548 bits: 6,
3549 value: 8,
3550 },
3551 HuffmanCode {
3552 bits: 3,
3553 value: 255,
3554 },
3555 HuffmanCode {
3556 bits: 5,
3557 value: 254,
3558 },
3559 HuffmanCode {
3560 bits: 4,
3561 value: 253,
3562 },
3563 HuffmanCode {
3564 bits: 7,
3565 value: 249,
3566 },
3567 HuffmanCode {
3568 bits: 3,
3569 value: 137,
3570 },
3571 HuffmanCode {
3572 bits: 5,
3573 value: 200,
3574 },
3575 HuffmanCode {
3576 bits: 4,
3577 value: 1,
3578 },
3579 HuffmanCode {
3580 bits: 6,
3581 value: 130,
3582 },
3583 HuffmanCode {
3584 bits: 3,
3585 value: 255,
3586 },
3587 HuffmanCode {
3588 bits: 6,
3589 value: 4,
3590 },
3591 HuffmanCode {
3592 bits: 5,
3593 value: 16,
3594 },
3595 HuffmanCode {
3596 bits: 8,
3597 value: 48,
3598 },
3599 HuffmanCode {
3600 bits: 3,
3601 value: 137,
3602 },
3603 HuffmanCode {
3604 bits: 5,
3605 value: 192,
3606 },
3607 HuffmanCode {
3608 bits: 4,
3609 value: 0,
3610 },
3611 HuffmanCode {
3612 bits: 6,
3613 value: 10,
3614 },
3615 HuffmanCode {
3616 bits: 3,
3617 value: 255,
3618 },
3619 HuffmanCode {
3620 bits: 6,
3621 value: 2,
3622 },
3623 HuffmanCode {
3624 bits: 4,
3625 value: 253,
3626 },
3627 HuffmanCode {
3628 bits: 8,
3629 value: 33,
3630 },
3631 HuffmanCode {
3632 bits: 3,
3633 value: 137,
3634 },
3635 HuffmanCode {
3636 bits: 5,
3637 value: 235,
3638 },
3639 HuffmanCode {
3640 bits: 4,
3641 value: 1,
3642 },
3643 HuffmanCode {
3644 bits: 6,
3645 value: 208,
3646 },
3647 HuffmanCode {
3648 bits: 3,
3649 value: 255,
3650 },
3651 HuffmanCode {
3652 bits: 6,
3653 value: 6,
3654 },
3655 HuffmanCode {
3656 bits: 5,
3657 value: 32,
3658 },
3659 HuffmanCode {
3660 bits: 8,
3661 value: 56,
3662 },
3663 HuffmanCode {
3664 bits: 3,
3665 value: 137,
3666 },
3667 HuffmanCode {
3668 bits: 5,
3669 value: 184,
3670 },
3671 HuffmanCode {
3672 bits: 4,
3673 value: 0,
3674 },
3675 HuffmanCode {
3676 bits: 6,
3677 value: 9,
3678 },
3679 HuffmanCode {
3680 bits: 3,
3681 value: 255,
3682 },
3683 HuffmanCode {
3684 bits: 5,
3685 value: 254,
3686 },
3687 HuffmanCode {
3688 bits: 4,
3689 value: 253,
3690 },
3691 HuffmanCode {
3692 bits: 7,
3693 value: 251,
3694 },
3695 HuffmanCode {
3696 bits: 3,
3697 value: 137,
3698 },
3699 HuffmanCode {
3700 bits: 5,
3701 value: 200,
3702 },
3703 HuffmanCode {
3704 bits: 4,
3705 value: 1,
3706 },
3707 HuffmanCode {
3708 bits: 6,
3709 value: 156,
3710 },
3711 HuffmanCode {
3712 bits: 3,
3713 value: 255,
3714 },
3715 HuffmanCode {
3716 bits: 6,
3717 value: 5,
3718 },
3719 HuffmanCode {
3720 bits: 5,
3721 value: 16,
3722 },
3723 HuffmanCode {
3724 bits: 8,
3725 value: 52,
3726 },
3727 HuffmanCode {
3728 bits: 3,
3729 value: 137,
3730 },
3731 HuffmanCode {
3732 bits: 5,
3733 value: 192,
3734 },
3735 HuffmanCode {
3736 bits: 4,
3737 value: 0,
3738 },
3739 HuffmanCode {
3740 bits: 6,
3741 value: 65,
3742 },
3743 HuffmanCode {
3744 bits: 3,
3745 value: 255,
3746 },
3747 HuffmanCode {
3748 bits: 6,
3749 value: 3,
3750 },
3751 HuffmanCode {
3752 bits: 4,
3753 value: 253,
3754 },
3755 HuffmanCode {
3756 bits: 8,
3757 value: 37,
3758 },
3759 HuffmanCode {
3760 bits: 3,
3761 value: 137,
3762 },
3763 HuffmanCode {
3764 bits: 5,
3765 value: 235,
3766 },
3767 HuffmanCode {
3768 bits: 4,
3769 value: 1,
3770 },
3771 HuffmanCode {
3772 bits: 7,
3773 value: 17,
3774 },
3775 HuffmanCode {
3776 bits: 3,
3777 value: 255,
3778 },
3779 HuffmanCode {
3780 bits: 6,
3781 value: 7,
3782 },
3783 HuffmanCode {
3784 bits: 5,
3785 value: 32,
3786 },
3787 HuffmanCode {
3788 bits: 8,
3789 value: 138,
3790 },
3791 HuffmanCode {
3792 bits: 3,
3793 value: 137,
3794 },
3795 HuffmanCode {
3796 bits: 5,
3797 value: 184,
3798 },
3799 HuffmanCode {
3800 bits: 4,
3801 value: 0,
3802 },
3803 HuffmanCode {
3804 bits: 6,
3805 value: 8,
3806 },
3807 HuffmanCode {
3808 bits: 3,
3809 value: 255,
3810 },
3811 HuffmanCode {
3812 bits: 5,
3813 value: 254,
3814 },
3815 HuffmanCode {
3816 bits: 4,
3817 value: 253,
3818 },
3819 HuffmanCode {
3820 bits: 7,
3821 value: 250,
3822 },
3823 HuffmanCode {
3824 bits: 3,
3825 value: 137,
3826 },
3827 HuffmanCode {
3828 bits: 5,
3829 value: 200,
3830 },
3831 HuffmanCode {
3832 bits: 4,
3833 value: 1,
3834 },
3835 HuffmanCode {
3836 bits: 6,
3837 value: 130,
3838 },
3839 HuffmanCode {
3840 bits: 3,
3841 value: 255,
3842 },
3843 HuffmanCode {
3844 bits: 6,
3845 value: 4,
3846 },
3847 HuffmanCode {
3848 bits: 5,
3849 value: 16,
3850 },
3851 HuffmanCode {
3852 bits: 8,
3853 value: 50,
3854 },
3855 HuffmanCode {
3856 bits: 3,
3857 value: 137,
3858 },
3859 HuffmanCode {
3860 bits: 5,
3861 value: 192,
3862 },
3863 HuffmanCode {
3864 bits: 4,
3865 value: 0,
3866 },
3867 HuffmanCode {
3868 bits: 6,
3869 value: 10,
3870 },
3871 HuffmanCode {
3872 bits: 3,
3873 value: 255,
3874 },
3875 HuffmanCode {
3876 bits: 6,
3877 value: 2,
3878 },
3879 HuffmanCode {
3880 bits: 4,
3881 value: 253,
3882 },
3883 HuffmanCode {
3884 bits: 8,
3885 value: 35,
3886 },
3887 HuffmanCode {
3888 bits: 3,
3889 value: 137,
3890 },
3891 HuffmanCode {
3892 bits: 5,
3893 value: 235,
3894 },
3895 HuffmanCode {
3896 bits: 4,
3897 value: 1,
3898 },
3899 HuffmanCode {
3900 bits: 6,
3901 value: 208,
3902 },
3903 HuffmanCode {
3904 bits: 3,
3905 value: 255,
3906 },
3907 HuffmanCode {
3908 bits: 6,
3909 value: 6,
3910 },
3911 HuffmanCode {
3912 bits: 5,
3913 value: 32,
3914 },
3915 HuffmanCode {
3916 bits: 8,
3917 value: 129,
3918 },
3919 HuffmanCode {
3920 bits: 3,
3921 value: 137,
3922 },
3923 HuffmanCode {
3924 bits: 5,
3925 value: 184,
3926 },
3927 HuffmanCode {
3928 bits: 4,
3929 value: 0,
3930 },
3931 HuffmanCode {
3932 bits: 6,
3933 value: 9,
3934 },
3935 HuffmanCode {
3936 bits: 3,
3937 value: 255,
3938 },
3939 HuffmanCode {
3940 bits: 5,
3941 value: 254,
3942 },
3943 HuffmanCode {
3944 bits: 4,
3945 value: 253,
3946 },
3947 HuffmanCode {
3948 bits: 7,
3949 value: 252,
3950 },
3951 HuffmanCode {
3952 bits: 3,
3953 value: 137,
3954 },
3955 HuffmanCode {
3956 bits: 5,
3957 value: 200,
3958 },
3959 HuffmanCode {
3960 bits: 4,
3961 value: 1,
3962 },
3963 HuffmanCode {
3964 bits: 6,
3965 value: 156,
3966 },
3967 HuffmanCode {
3968 bits: 3,
3969 value: 255,
3970 },
3971 HuffmanCode {
3972 bits: 6,
3973 value: 5,
3974 },
3975 HuffmanCode {
3976 bits: 5,
3977 value: 16,
3978 },
3979 HuffmanCode {
3980 bits: 8,
3981 value: 54,
3982 },
3983 HuffmanCode {
3984 bits: 3,
3985 value: 137,
3986 },
3987 HuffmanCode {
3988 bits: 5,
3989 value: 192,
3990 },
3991 HuffmanCode {
3992 bits: 4,
3993 value: 0,
3994 },
3995 HuffmanCode {
3996 bits: 6,
3997 value: 65,
3998 },
3999 HuffmanCode {
4000 bits: 3,
4001 value: 255,
4002 },
4003 HuffmanCode {
4004 bits: 6,
4005 value: 3,
4006 },
4007 HuffmanCode {
4008 bits: 4,
4009 value: 253,
4010 },
4011 HuffmanCode {
4012 bits: 8,
4013 value: 39,
4014 },
4015 HuffmanCode {
4016 bits: 3,
4017 value: 137,
4018 },
4019 HuffmanCode {
4020 bits: 5,
4021 value: 235,
4022 },
4023 HuffmanCode {
4024 bits: 4,
4025 value: 1,
4026 },
4027 HuffmanCode {
4028 bits: 7,
4029 value: 31,
4030 },
4031 HuffmanCode {
4032 bits: 3,
4033 value: 255,
4034 },
4035 HuffmanCode {
4036 bits: 6,
4037 value: 7,
4038 },
4039 HuffmanCode {
4040 bits: 5,
4041 value: 32,
4042 },
4043 HuffmanCode {
4044 bits: 8,
4045 value: 140,
4046 },
4047 HuffmanCode {
4048 bits: 3,
4049 value: 137,
4050 },
4051 HuffmanCode {
4052 bits: 5,
4053 value: 184,
4054 },
4055 HuffmanCode {
4056 bits: 4,
4057 value: 0,
4058 },
4059 HuffmanCode {
4060 bits: 6,
4061 value: 8,
4062 },
4063 HuffmanCode {
4064 bits: 3,
4065 value: 255,
4066 },
4067 HuffmanCode {
4068 bits: 5,
4069 value: 254,
4070 },
4071 HuffmanCode {
4072 bits: 4,
4073 value: 253,
4074 },
4075 HuffmanCode {
4076 bits: 7,
4077 value: 249,
4078 },
4079 HuffmanCode {
4080 bits: 3,
4081 value: 137,
4082 },
4083 HuffmanCode {
4084 bits: 5,
4085 value: 200,
4086 },
4087 HuffmanCode {
4088 bits: 4,
4089 value: 1,
4090 },
4091 HuffmanCode {
4092 bits: 6,
4093 value: 130,
4094 },
4095 HuffmanCode {
4096 bits: 3,
4097 value: 255,
4098 },
4099 HuffmanCode {
4100 bits: 6,
4101 value: 4,
4102 },
4103 HuffmanCode {
4104 bits: 5,
4105 value: 16,
4106 },
4107 HuffmanCode {
4108 bits: 8,
4109 value: 49,
4110 },
4111 HuffmanCode {
4112 bits: 3,
4113 value: 137,
4114 },
4115 HuffmanCode {
4116 bits: 5,
4117 value: 192,
4118 },
4119 HuffmanCode {
4120 bits: 4,
4121 value: 0,
4122 },
4123 HuffmanCode {
4124 bits: 6,
4125 value: 10,
4126 },
4127 HuffmanCode {
4128 bits: 3,
4129 value: 255,
4130 },
4131 HuffmanCode {
4132 bits: 6,
4133 value: 2,
4134 },
4135 HuffmanCode {
4136 bits: 4,
4137 value: 253,
4138 },
4139 HuffmanCode {
4140 bits: 8,
4141 value: 34,
4142 },
4143 HuffmanCode {
4144 bits: 3,
4145 value: 137,
4146 },
4147 HuffmanCode {
4148 bits: 5,
4149 value: 235,
4150 },
4151 HuffmanCode {
4152 bits: 4,
4153 value: 1,
4154 },
4155 HuffmanCode {
4156 bits: 6,
4157 value: 208,
4158 },
4159 HuffmanCode {
4160 bits: 3,
4161 value: 255,
4162 },
4163 HuffmanCode {
4164 bits: 6,
4165 value: 6,
4166 },
4167 HuffmanCode {
4168 bits: 5,
4169 value: 32,
4170 },
4171 HuffmanCode {
4172 bits: 8,
4173 value: 72,
4174 },
4175 HuffmanCode {
4176 bits: 3,
4177 value: 137,
4178 },
4179 HuffmanCode {
4180 bits: 5,
4181 value: 184,
4182 },
4183 HuffmanCode {
4184 bits: 4,
4185 value: 0,
4186 },
4187 HuffmanCode {
4188 bits: 6,
4189 value: 9,
4190 },
4191 HuffmanCode {
4192 bits: 3,
4193 value: 255,
4194 },
4195 HuffmanCode {
4196 bits: 5,
4197 value: 254,
4198 },
4199 HuffmanCode {
4200 bits: 4,
4201 value: 253,
4202 },
4203 HuffmanCode {
4204 bits: 7,
4205 value: 251,
4206 },
4207 HuffmanCode {
4208 bits: 3,
4209 value: 137,
4210 },
4211 HuffmanCode {
4212 bits: 5,
4213 value: 200,
4214 },
4215 HuffmanCode {
4216 bits: 4,
4217 value: 1,
4218 },
4219 HuffmanCode {
4220 bits: 6,
4221 value: 156,
4222 },
4223 HuffmanCode {
4224 bits: 3,
4225 value: 255,
4226 },
4227 HuffmanCode {
4228 bits: 6,
4229 value: 5,
4230 },
4231 HuffmanCode {
4232 bits: 5,
4233 value: 16,
4234 },
4235 HuffmanCode {
4236 bits: 8,
4237 value: 53,
4238 },
4239 HuffmanCode {
4240 bits: 3,
4241 value: 137,
4242 },
4243 HuffmanCode {
4244 bits: 5,
4245 value: 192,
4246 },
4247 HuffmanCode {
4248 bits: 4,
4249 value: 0,
4250 },
4251 HuffmanCode {
4252 bits: 6,
4253 value: 65,
4254 },
4255 HuffmanCode {
4256 bits: 3,
4257 value: 255,
4258 },
4259 HuffmanCode {
4260 bits: 6,
4261 value: 3,
4262 },
4263 HuffmanCode {
4264 bits: 4,
4265 value: 253,
4266 },
4267 HuffmanCode {
4268 bits: 8,
4269 value: 38,
4270 },
4271 HuffmanCode {
4272 bits: 3,
4273 value: 137,
4274 },
4275 HuffmanCode {
4276 bits: 5,
4277 value: 235,
4278 },
4279 HuffmanCode {
4280 bits: 4,
4281 value: 1,
4282 },
4283 HuffmanCode {
4284 bits: 7,
4285 value: 17,
4286 },
4287 HuffmanCode {
4288 bits: 3,
4289 value: 255,
4290 },
4291 HuffmanCode {
4292 bits: 6,
4293 value: 7,
4294 },
4295 HuffmanCode {
4296 bits: 5,
4297 value: 32,
4298 },
4299 HuffmanCode {
4300 bits: 8,
4301 value: 139,
4302 },
4303 HuffmanCode {
4304 bits: 3,
4305 value: 137,
4306 },
4307 HuffmanCode {
4308 bits: 5,
4309 value: 184,
4310 },
4311 HuffmanCode {
4312 bits: 4,
4313 value: 0,
4314 },
4315 HuffmanCode {
4316 bits: 6,
4317 value: 8,
4318 },
4319 HuffmanCode {
4320 bits: 3,
4321 value: 255,
4322 },
4323 HuffmanCode {
4324 bits: 5,
4325 value: 254,
4326 },
4327 HuffmanCode {
4328 bits: 4,
4329 value: 253,
4330 },
4331 HuffmanCode {
4332 bits: 7,
4333 value: 250,
4334 },
4335 HuffmanCode {
4336 bits: 3,
4337 value: 137,
4338 },
4339 HuffmanCode {
4340 bits: 5,
4341 value: 200,
4342 },
4343 HuffmanCode {
4344 bits: 4,
4345 value: 1,
4346 },
4347 HuffmanCode {
4348 bits: 6,
4349 value: 130,
4350 },
4351 HuffmanCode {
4352 bits: 3,
4353 value: 255,
4354 },
4355 HuffmanCode {
4356 bits: 6,
4357 value: 4,
4358 },
4359 HuffmanCode {
4360 bits: 5,
4361 value: 16,
4362 },
4363 HuffmanCode {
4364 bits: 8,
4365 value: 51,
4366 },
4367 HuffmanCode {
4368 bits: 3,
4369 value: 137,
4370 },
4371 HuffmanCode {
4372 bits: 5,
4373 value: 192,
4374 },
4375 HuffmanCode {
4376 bits: 4,
4377 value: 0,
4378 },
4379 HuffmanCode {
4380 bits: 6,
4381 value: 10,
4382 },
4383 HuffmanCode {
4384 bits: 3,
4385 value: 255,
4386 },
4387 HuffmanCode {
4388 bits: 6,
4389 value: 2,
4390 },
4391 HuffmanCode {
4392 bits: 4,
4393 value: 253,
4394 },
4395 HuffmanCode {
4396 bits: 8,
4397 value: 36,
4398 },
4399 HuffmanCode {
4400 bits: 3,
4401 value: 137,
4402 },
4403 HuffmanCode {
4404 bits: 5,
4405 value: 235,
4406 },
4407 HuffmanCode {
4408 bits: 4,
4409 value: 1,
4410 },
4411 HuffmanCode {
4412 bits: 6,
4413 value: 208,
4414 },
4415 HuffmanCode {
4416 bits: 3,
4417 value: 255,
4418 },
4419 HuffmanCode {
4420 bits: 6,
4421 value: 6,
4422 },
4423 HuffmanCode {
4424 bits: 5,
4425 value: 32,
4426 },
4427 HuffmanCode {
4428 bits: 8,
4429 value: 131,
4430 },
4431 HuffmanCode {
4432 bits: 3,
4433 value: 137,
4434 },
4435 HuffmanCode {
4436 bits: 5,
4437 value: 184,
4438 },
4439 HuffmanCode {
4440 bits: 4,
4441 value: 0,
4442 },
4443 HuffmanCode {
4444 bits: 6,
4445 value: 9,
4446 },
4447 HuffmanCode {
4448 bits: 3,
4449 value: 255,
4450 },
4451 HuffmanCode {
4452 bits: 5,
4453 value: 254,
4454 },
4455 HuffmanCode {
4456 bits: 4,
4457 value: 253,
4458 },
4459 HuffmanCode {
4460 bits: 7,
4461 value: 252,
4462 },
4463 HuffmanCode {
4464 bits: 3,
4465 value: 137,
4466 },
4467 HuffmanCode {
4468 bits: 5,
4469 value: 200,
4470 },
4471 HuffmanCode {
4472 bits: 4,
4473 value: 1,
4474 },
4475 HuffmanCode {
4476 bits: 6,
4477 value: 156,
4478 },
4479 HuffmanCode {
4480 bits: 3,
4481 value: 255,
4482 },
4483 HuffmanCode {
4484 bits: 6,
4485 value: 5,
4486 },
4487 HuffmanCode {
4488 bits: 5,
4489 value: 16,
4490 },
4491 HuffmanCode {
4492 bits: 8,
4493 value: 55,
4494 },
4495 HuffmanCode {
4496 bits: 3,
4497 value: 137,
4498 },
4499 HuffmanCode {
4500 bits: 5,
4501 value: 192,
4502 },
4503 HuffmanCode {
4504 bits: 4,
4505 value: 0,
4506 },
4507 HuffmanCode {
4508 bits: 6,
4509 value: 65,
4510 },
4511 HuffmanCode {
4512 bits: 3,
4513 value: 255,
4514 },
4515 HuffmanCode {
4516 bits: 6,
4517 value: 3,
4518 },
4519 HuffmanCode {
4520 bits: 4,
4521 value: 253,
4522 },
4523 HuffmanCode {
4524 bits: 8,
4525 value: 40,
4526 },
4527 HuffmanCode {
4528 bits: 3,
4529 value: 137,
4530 },
4531 HuffmanCode {
4532 bits: 5,
4533 value: 235,
4534 },
4535 HuffmanCode {
4536 bits: 4,
4537 value: 1,
4538 },
4539 HuffmanCode {
4540 bits: 7,
4541 value: 31,
4542 },
4543 HuffmanCode {
4544 bits: 3,
4545 value: 255,
4546 },
4547 HuffmanCode {
4548 bits: 6,
4549 value: 7,
4550 },
4551 HuffmanCode {
4552 bits: 5,
4553 value: 32,
4554 },
4555 HuffmanCode {
4556 bits: 8,
4557 value: 141,
4558 },
4559 HuffmanCode {
4560 bits: 0,
4561 value: 0,
4562 },
4563 HuffmanCode {
4564 bits: 0,
4565 value: 0,
4566 },
4567 HuffmanCode {
4568 bits: 0,
4569 value: 0,
4570 },
4571 HuffmanCode {
4572 bits: 0,
4573 value: 0,
4574 }];
4575 for index in 0..end_table.len() {
4576 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
4577 [index, end_table[index].bits as usize, end_table[index].value as usize]);
4578 assert!(table[index] == end_table[index]);
4579 }
4580}
4581#[test]
4582fn simple_0() {
4583 let mut table: [HuffmanCode; 256] = [HuffmanCode {
4584 bits: 0,
4585 value: 0,
4586 }; 256];
4587 let end_table: [HuffmanCode; 256] = [HuffmanCode {
4588 bits: 0,
4589 value: 32,
4590 }; 256];
4591 let mut val: [u16; 1] = [32];
4592 let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 0);
4593 assert_eq!(goal_size, 256);
4594 for index in 0..end_table.len() {
4595 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
4596 [index, end_table[index].bits as usize, end_table[index].value as usize]);
4597 assert!(table[index] == end_table[index]);
4598 }
4599}
4600#[test]
4601fn simple_1() {
4602 let mut table: [HuffmanCode; 256] = [HuffmanCode {
4603 bits: 0,
4604 value: 0,
4605 }; 256];
4606 let end_table: [HuffmanCode; 256] = [HuffmanCode {
4607 bits: 1,
4608 value: 146,
4609 },
4610 HuffmanCode {
4611 bits: 1,
4612 value: 192,
4613 },
4614 HuffmanCode {
4615 bits: 1,
4616 value: 146,
4617 },
4618 HuffmanCode {
4619 bits: 1,
4620 value: 192,
4621 },
4622 HuffmanCode {
4623 bits: 1,
4624 value: 146,
4625 },
4626 HuffmanCode {
4627 bits: 1,
4628 value: 192,
4629 },
4630 HuffmanCode {
4631 bits: 1,
4632 value: 146,
4633 },
4634 HuffmanCode {
4635 bits: 1,
4636 value: 192,
4637 },
4638 HuffmanCode {
4639 bits: 1,
4640 value: 146,
4641 },
4642 HuffmanCode {
4643 bits: 1,
4644 value: 192,
4645 },
4646 HuffmanCode {
4647 bits: 1,
4648 value: 146,
4649 },
4650 HuffmanCode {
4651 bits: 1,
4652 value: 192,
4653 },
4654 HuffmanCode {
4655 bits: 1,
4656 value: 146,
4657 },
4658 HuffmanCode {
4659 bits: 1,
4660 value: 192,
4661 },
4662 HuffmanCode {
4663 bits: 1,
4664 value: 146,
4665 },
4666 HuffmanCode {
4667 bits: 1,
4668 value: 192,
4669 },
4670 HuffmanCode {
4671 bits: 1,
4672 value: 146,
4673 },
4674 HuffmanCode {
4675 bits: 1,
4676 value: 192,
4677 },
4678 HuffmanCode {
4679 bits: 1,
4680 value: 146,
4681 },
4682 HuffmanCode {
4683 bits: 1,
4684 value: 192,
4685 },
4686 HuffmanCode {
4687 bits: 1,
4688 value: 146,
4689 },
4690 HuffmanCode {
4691 bits: 1,
4692 value: 192,
4693 },
4694 HuffmanCode {
4695 bits: 1,
4696 value: 146,
4697 },
4698 HuffmanCode {
4699 bits: 1,
4700 value: 192,
4701 },
4702 HuffmanCode {
4703 bits: 1,
4704 value: 146,
4705 },
4706 HuffmanCode {
4707 bits: 1,
4708 value: 192,
4709 },
4710 HuffmanCode {
4711 bits: 1,
4712 value: 146,
4713 },
4714 HuffmanCode {
4715 bits: 1,
4716 value: 192,
4717 },
4718 HuffmanCode {
4719 bits: 1,
4720 value: 146,
4721 },
4722 HuffmanCode {
4723 bits: 1,
4724 value: 192,
4725 },
4726 HuffmanCode {
4727 bits: 1,
4728 value: 146,
4729 },
4730 HuffmanCode {
4731 bits: 1,
4732 value: 192,
4733 },
4734 HuffmanCode {
4735 bits: 1,
4736 value: 146,
4737 },
4738 HuffmanCode {
4739 bits: 1,
4740 value: 192,
4741 },
4742 HuffmanCode {
4743 bits: 1,
4744 value: 146,
4745 },
4746 HuffmanCode {
4747 bits: 1,
4748 value: 192,
4749 },
4750 HuffmanCode {
4751 bits: 1,
4752 value: 146,
4753 },
4754 HuffmanCode {
4755 bits: 1,
4756 value: 192,
4757 },
4758 HuffmanCode {
4759 bits: 1,
4760 value: 146,
4761 },
4762 HuffmanCode {
4763 bits: 1,
4764 value: 192,
4765 },
4766 HuffmanCode {
4767 bits: 1,
4768 value: 146,
4769 },
4770 HuffmanCode {
4771 bits: 1,
4772 value: 192,
4773 },
4774 HuffmanCode {
4775 bits: 1,
4776 value: 146,
4777 },
4778 HuffmanCode {
4779 bits: 1,
4780 value: 192,
4781 },
4782 HuffmanCode {
4783 bits: 1,
4784 value: 146,
4785 },
4786 HuffmanCode {
4787 bits: 1,
4788 value: 192,
4789 },
4790 HuffmanCode {
4791 bits: 1,
4792 value: 146,
4793 },
4794 HuffmanCode {
4795 bits: 1,
4796 value: 192,
4797 },
4798 HuffmanCode {
4799 bits: 1,
4800 value: 146,
4801 },
4802 HuffmanCode {
4803 bits: 1,
4804 value: 192,
4805 },
4806 HuffmanCode {
4807 bits: 1,
4808 value: 146,
4809 },
4810 HuffmanCode {
4811 bits: 1,
4812 value: 192,
4813 },
4814 HuffmanCode {
4815 bits: 1,
4816 value: 146,
4817 },
4818 HuffmanCode {
4819 bits: 1,
4820 value: 192,
4821 },
4822 HuffmanCode {
4823 bits: 1,
4824 value: 146,
4825 },
4826 HuffmanCode {
4827 bits: 1,
4828 value: 192,
4829 },
4830 HuffmanCode {
4831 bits: 1,
4832 value: 146,
4833 },
4834 HuffmanCode {
4835 bits: 1,
4836 value: 192,
4837 },
4838 HuffmanCode {
4839 bits: 1,
4840 value: 146,
4841 },
4842 HuffmanCode {
4843 bits: 1,
4844 value: 192,
4845 },
4846 HuffmanCode {
4847 bits: 1,
4848 value: 146,
4849 },
4850 HuffmanCode {
4851 bits: 1,
4852 value: 192,
4853 },
4854 HuffmanCode {
4855 bits: 1,
4856 value: 146,
4857 },
4858 HuffmanCode {
4859 bits: 1,
4860 value: 192,
4861 },
4862 HuffmanCode {
4863 bits: 1,
4864 value: 146,
4865 },
4866 HuffmanCode {
4867 bits: 1,
4868 value: 192,
4869 },
4870 HuffmanCode {
4871 bits: 1,
4872 value: 146,
4873 },
4874 HuffmanCode {
4875 bits: 1,
4876 value: 192,
4877 },
4878 HuffmanCode {
4879 bits: 1,
4880 value: 146,
4881 },
4882 HuffmanCode {
4883 bits: 1,
4884 value: 192,
4885 },
4886 HuffmanCode {
4887 bits: 1,
4888 value: 146,
4889 },
4890 HuffmanCode {
4891 bits: 1,
4892 value: 192,
4893 },
4894 HuffmanCode {
4895 bits: 1,
4896 value: 146,
4897 },
4898 HuffmanCode {
4899 bits: 1,
4900 value: 192,
4901 },
4902 HuffmanCode {
4903 bits: 1,
4904 value: 146,
4905 },
4906 HuffmanCode {
4907 bits: 1,
4908 value: 192,
4909 },
4910 HuffmanCode {
4911 bits: 1,
4912 value: 146,
4913 },
4914 HuffmanCode {
4915 bits: 1,
4916 value: 192,
4917 },
4918 HuffmanCode {
4919 bits: 1,
4920 value: 146,
4921 },
4922 HuffmanCode {
4923 bits: 1,
4924 value: 192,
4925 },
4926 HuffmanCode {
4927 bits: 1,
4928 value: 146,
4929 },
4930 HuffmanCode {
4931 bits: 1,
4932 value: 192,
4933 },
4934 HuffmanCode {
4935 bits: 1,
4936 value: 146,
4937 },
4938 HuffmanCode {
4939 bits: 1,
4940 value: 192,
4941 },
4942 HuffmanCode {
4943 bits: 1,
4944 value: 146,
4945 },
4946 HuffmanCode {
4947 bits: 1,
4948 value: 192,
4949 },
4950 HuffmanCode {
4951 bits: 1,
4952 value: 146,
4953 },
4954 HuffmanCode {
4955 bits: 1,
4956 value: 192,
4957 },
4958 HuffmanCode {
4959 bits: 1,
4960 value: 146,
4961 },
4962 HuffmanCode {
4963 bits: 1,
4964 value: 192,
4965 },
4966 HuffmanCode {
4967 bits: 1,
4968 value: 146,
4969 },
4970 HuffmanCode {
4971 bits: 1,
4972 value: 192,
4973 },
4974 HuffmanCode {
4975 bits: 1,
4976 value: 146,
4977 },
4978 HuffmanCode {
4979 bits: 1,
4980 value: 192,
4981 },
4982 HuffmanCode {
4983 bits: 1,
4984 value: 146,
4985 },
4986 HuffmanCode {
4987 bits: 1,
4988 value: 192,
4989 },
4990 HuffmanCode {
4991 bits: 1,
4992 value: 146,
4993 },
4994 HuffmanCode {
4995 bits: 1,
4996 value: 192,
4997 },
4998 HuffmanCode {
4999 bits: 1,
5000 value: 146,
5001 },
5002 HuffmanCode {
5003 bits: 1,
5004 value: 192,
5005 },
5006 HuffmanCode {
5007 bits: 1,
5008 value: 146,
5009 },
5010 HuffmanCode {
5011 bits: 1,
5012 value: 192,
5013 },
5014 HuffmanCode {
5015 bits: 1,
5016 value: 146,
5017 },
5018 HuffmanCode {
5019 bits: 1,
5020 value: 192,
5021 },
5022 HuffmanCode {
5023 bits: 1,
5024 value: 146,
5025 },
5026 HuffmanCode {
5027 bits: 1,
5028 value: 192,
5029 },
5030 HuffmanCode {
5031 bits: 1,
5032 value: 146,
5033 },
5034 HuffmanCode {
5035 bits: 1,
5036 value: 192,
5037 },
5038 HuffmanCode {
5039 bits: 1,
5040 value: 146,
5041 },
5042 HuffmanCode {
5043 bits: 1,
5044 value: 192,
5045 },
5046 HuffmanCode {
5047 bits: 1,
5048 value: 146,
5049 },
5050 HuffmanCode {
5051 bits: 1,
5052 value: 192,
5053 },
5054 HuffmanCode {
5055 bits: 1,
5056 value: 146,
5057 },
5058 HuffmanCode {
5059 bits: 1,
5060 value: 192,
5061 },
5062 HuffmanCode {
5063 bits: 1,
5064 value: 146,
5065 },
5066 HuffmanCode {
5067 bits: 1,
5068 value: 192,
5069 },
5070 HuffmanCode {
5071 bits: 1,
5072 value: 146,
5073 },
5074 HuffmanCode {
5075 bits: 1,
5076 value: 192,
5077 },
5078 HuffmanCode {
5079 bits: 1,
5080 value: 146,
5081 },
5082 HuffmanCode {
5083 bits: 1,
5084 value: 192,
5085 },
5086 HuffmanCode {
5087 bits: 1,
5088 value: 146,
5089 },
5090 HuffmanCode {
5091 bits: 1,
5092 value: 192,
5093 },
5094 HuffmanCode {
5095 bits: 1,
5096 value: 146,
5097 },
5098 HuffmanCode {
5099 bits: 1,
5100 value: 192,
5101 },
5102 HuffmanCode {
5103 bits: 1,
5104 value: 146,
5105 },
5106 HuffmanCode {
5107 bits: 1,
5108 value: 192,
5109 },
5110 HuffmanCode {
5111 bits: 1,
5112 value: 146,
5113 },
5114 HuffmanCode {
5115 bits: 1,
5116 value: 192,
5117 },
5118 HuffmanCode {
5119 bits: 1,
5120 value: 146,
5121 },
5122 HuffmanCode {
5123 bits: 1,
5124 value: 192,
5125 },
5126 HuffmanCode {
5127 bits: 1,
5128 value: 146,
5129 },
5130 HuffmanCode {
5131 bits: 1,
5132 value: 192,
5133 },
5134 HuffmanCode {
5135 bits: 1,
5136 value: 146,
5137 },
5138 HuffmanCode {
5139 bits: 1,
5140 value: 192,
5141 },
5142 HuffmanCode {
5143 bits: 1,
5144 value: 146,
5145 },
5146 HuffmanCode {
5147 bits: 1,
5148 value: 192,
5149 },
5150 HuffmanCode {
5151 bits: 1,
5152 value: 146,
5153 },
5154 HuffmanCode {
5155 bits: 1,
5156 value: 192,
5157 },
5158 HuffmanCode {
5159 bits: 1,
5160 value: 146,
5161 },
5162 HuffmanCode {
5163 bits: 1,
5164 value: 192,
5165 },
5166 HuffmanCode {
5167 bits: 1,
5168 value: 146,
5169 },
5170 HuffmanCode {
5171 bits: 1,
5172 value: 192,
5173 },
5174 HuffmanCode {
5175 bits: 1,
5176 value: 146,
5177 },
5178 HuffmanCode {
5179 bits: 1,
5180 value: 192,
5181 },
5182 HuffmanCode {
5183 bits: 1,
5184 value: 146,
5185 },
5186 HuffmanCode {
5187 bits: 1,
5188 value: 192,
5189 },
5190 HuffmanCode {
5191 bits: 1,
5192 value: 146,
5193 },
5194 HuffmanCode {
5195 bits: 1,
5196 value: 192,
5197 },
5198 HuffmanCode {
5199 bits: 1,
5200 value: 146,
5201 },
5202 HuffmanCode {
5203 bits: 1,
5204 value: 192,
5205 },
5206 HuffmanCode {
5207 bits: 1,
5208 value: 146,
5209 },
5210 HuffmanCode {
5211 bits: 1,
5212 value: 192,
5213 },
5214 HuffmanCode {
5215 bits: 1,
5216 value: 146,
5217 },
5218 HuffmanCode {
5219 bits: 1,
5220 value: 192,
5221 },
5222 HuffmanCode {
5223 bits: 1,
5224 value: 146,
5225 },
5226 HuffmanCode {
5227 bits: 1,
5228 value: 192,
5229 },
5230 HuffmanCode {
5231 bits: 1,
5232 value: 146,
5233 },
5234 HuffmanCode {
5235 bits: 1,
5236 value: 192,
5237 },
5238 HuffmanCode {
5239 bits: 1,
5240 value: 146,
5241 },
5242 HuffmanCode {
5243 bits: 1,
5244 value: 192,
5245 },
5246 HuffmanCode {
5247 bits: 1,
5248 value: 146,
5249 },
5250 HuffmanCode {
5251 bits: 1,
5252 value: 192,
5253 },
5254 HuffmanCode {
5255 bits: 1,
5256 value: 146,
5257 },
5258 HuffmanCode {
5259 bits: 1,
5260 value: 192,
5261 },
5262 HuffmanCode {
5263 bits: 1,
5264 value: 146,
5265 },
5266 HuffmanCode {
5267 bits: 1,
5268 value: 192,
5269 },
5270 HuffmanCode {
5271 bits: 1,
5272 value: 146,
5273 },
5274 HuffmanCode {
5275 bits: 1,
5276 value: 192,
5277 },
5278 HuffmanCode {
5279 bits: 1,
5280 value: 146,
5281 },
5282 HuffmanCode {
5283 bits: 1,
5284 value: 192,
5285 },
5286 HuffmanCode {
5287 bits: 1,
5288 value: 146,
5289 },
5290 HuffmanCode {
5291 bits: 1,
5292 value: 192,
5293 },
5294 HuffmanCode {
5295 bits: 1,
5296 value: 146,
5297 },
5298 HuffmanCode {
5299 bits: 1,
5300 value: 192,
5301 },
5302 HuffmanCode {
5303 bits: 1,
5304 value: 146,
5305 },
5306 HuffmanCode {
5307 bits: 1,
5308 value: 192,
5309 },
5310 HuffmanCode {
5311 bits: 1,
5312 value: 146,
5313 },
5314 HuffmanCode {
5315 bits: 1,
5316 value: 192,
5317 },
5318 HuffmanCode {
5319 bits: 1,
5320 value: 146,
5321 },
5322 HuffmanCode {
5323 bits: 1,
5324 value: 192,
5325 },
5326 HuffmanCode {
5327 bits: 1,
5328 value: 146,
5329 },
5330 HuffmanCode {
5331 bits: 1,
5332 value: 192,
5333 },
5334 HuffmanCode {
5335 bits: 1,
5336 value: 146,
5337 },
5338 HuffmanCode {
5339 bits: 1,
5340 value: 192,
5341 },
5342 HuffmanCode {
5343 bits: 1,
5344 value: 146,
5345 },
5346 HuffmanCode {
5347 bits: 1,
5348 value: 192,
5349 },
5350 HuffmanCode {
5351 bits: 1,
5352 value: 146,
5353 },
5354 HuffmanCode {
5355 bits: 1,
5356 value: 192,
5357 },
5358 HuffmanCode {
5359 bits: 1,
5360 value: 146,
5361 },
5362 HuffmanCode {
5363 bits: 1,
5364 value: 192,
5365 },
5366 HuffmanCode {
5367 bits: 1,
5368 value: 146,
5369 },
5370 HuffmanCode {
5371 bits: 1,
5372 value: 192,
5373 },
5374 HuffmanCode {
5375 bits: 1,
5376 value: 146,
5377 },
5378 HuffmanCode {
5379 bits: 1,
5380 value: 192,
5381 },
5382 HuffmanCode {
5383 bits: 1,
5384 value: 146,
5385 },
5386 HuffmanCode {
5387 bits: 1,
5388 value: 192,
5389 },
5390 HuffmanCode {
5391 bits: 1,
5392 value: 146,
5393 },
5394 HuffmanCode {
5395 bits: 1,
5396 value: 192,
5397 },
5398 HuffmanCode {
5399 bits: 1,
5400 value: 146,
5401 },
5402 HuffmanCode {
5403 bits: 1,
5404 value: 192,
5405 },
5406 HuffmanCode {
5407 bits: 1,
5408 value: 146,
5409 },
5410 HuffmanCode {
5411 bits: 1,
5412 value: 192,
5413 },
5414 HuffmanCode {
5415 bits: 1,
5416 value: 146,
5417 },
5418 HuffmanCode {
5419 bits: 1,
5420 value: 192,
5421 },
5422 HuffmanCode {
5423 bits: 1,
5424 value: 146,
5425 },
5426 HuffmanCode {
5427 bits: 1,
5428 value: 192,
5429 },
5430 HuffmanCode {
5431 bits: 1,
5432 value: 146,
5433 },
5434 HuffmanCode {
5435 bits: 1,
5436 value: 192,
5437 },
5438 HuffmanCode {
5439 bits: 1,
5440 value: 146,
5441 },
5442 HuffmanCode {
5443 bits: 1,
5444 value: 192,
5445 },
5446 HuffmanCode {
5447 bits: 1,
5448 value: 146,
5449 },
5450 HuffmanCode {
5451 bits: 1,
5452 value: 192,
5453 },
5454 HuffmanCode {
5455 bits: 1,
5456 value: 146,
5457 },
5458 HuffmanCode {
5459 bits: 1,
5460 value: 192,
5461 },
5462 HuffmanCode {
5463 bits: 1,
5464 value: 146,
5465 },
5466 HuffmanCode {
5467 bits: 1,
5468 value: 192,
5469 },
5470 HuffmanCode {
5471 bits: 1,
5472 value: 146,
5473 },
5474 HuffmanCode {
5475 bits: 1,
5476 value: 192,
5477 },
5478 HuffmanCode {
5479 bits: 1,
5480 value: 146,
5481 },
5482 HuffmanCode {
5483 bits: 1,
5484 value: 192,
5485 },
5486 HuffmanCode {
5487 bits: 1,
5488 value: 146,
5489 },
5490 HuffmanCode {
5491 bits: 1,
5492 value: 192,
5493 },
5494 HuffmanCode {
5495 bits: 1,
5496 value: 146,
5497 },
5498 HuffmanCode {
5499 bits: 1,
5500 value: 192,
5501 },
5502 HuffmanCode {
5503 bits: 1,
5504 value: 146,
5505 },
5506 HuffmanCode {
5507 bits: 1,
5508 value: 192,
5509 },
5510 HuffmanCode {
5511 bits: 1,
5512 value: 146,
5513 },
5514 HuffmanCode {
5515 bits: 1,
5516 value: 192,
5517 },
5518 HuffmanCode {
5519 bits: 1,
5520 value: 146,
5521 },
5522 HuffmanCode {
5523 bits: 1,
5524 value: 192,
5525 },
5526 HuffmanCode {
5527 bits: 1,
5528 value: 146,
5529 },
5530 HuffmanCode {
5531 bits: 1,
5532 value: 192,
5533 },
5534 HuffmanCode {
5535 bits: 1,
5536 value: 146,
5537 },
5538 HuffmanCode {
5539 bits: 1,
5540 value: 192,
5541 },
5542 HuffmanCode {
5543 bits: 1,
5544 value: 146,
5545 },
5546 HuffmanCode {
5547 bits: 1,
5548 value: 192,
5549 },
5550 HuffmanCode {
5551 bits: 1,
5552 value: 146,
5553 },
5554 HuffmanCode {
5555 bits: 1,
5556 value: 192,
5557 },
5558 HuffmanCode {
5559 bits: 1,
5560 value: 146,
5561 },
5562 HuffmanCode {
5563 bits: 1,
5564 value: 192,
5565 },
5566 HuffmanCode {
5567 bits: 1,
5568 value: 146,
5569 },
5570 HuffmanCode {
5571 bits: 1,
5572 value: 192,
5573 },
5574 HuffmanCode {
5575 bits: 1,
5576 value: 146,
5577 },
5578 HuffmanCode {
5579 bits: 1,
5580 value: 192,
5581 },
5582 HuffmanCode {
5583 bits: 1,
5584 value: 146,
5585 },
5586 HuffmanCode {
5587 bits: 1,
5588 value: 192,
5589 },
5590 HuffmanCode {
5591 bits: 1,
5592 value: 146,
5593 },
5594 HuffmanCode {
5595 bits: 1,
5596 value: 192,
5597 },
5598 HuffmanCode {
5599 bits: 1,
5600 value: 146,
5601 },
5602 HuffmanCode {
5603 bits: 1,
5604 value: 192,
5605 },
5606 HuffmanCode {
5607 bits: 1,
5608 value: 146,
5609 },
5610 HuffmanCode {
5611 bits: 1,
5612 value: 192,
5613 },
5614 HuffmanCode {
5615 bits: 1,
5616 value: 146,
5617 },
5618 HuffmanCode {
5619 bits: 1,
5620 value: 192,
5621 },
5622 HuffmanCode {
5623 bits: 1,
5624 value: 146,
5625 },
5626 HuffmanCode {
5627 bits: 1,
5628 value: 192,
5629 }];
5630 let mut val: [u16; 2] = [146, 192];
5631 let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 1);
5632 assert_eq!(goal_size, 256);
5633 for index in 0..end_table.len() {
5634 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
5635 [index, end_table[index].bits as usize, end_table[index].value as usize]);
5636 assert!(table[index] == end_table[index]);
5637 }
5638}
5639
5640
5641
5642
5643#[test]
5644fn simple_2() {
5645 let mut table: [HuffmanCode; 256] = [HuffmanCode {
5646 bits: 0,
5647 value: 0,
5648 }; 256];
5649 let end_table: [HuffmanCode; 256] = [HuffmanCode {
5650 bits: 1,
5651 value: 32,
5652 },
5653 HuffmanCode {
5654 bits: 2,
5655 value: 28,
5656 },
5657 HuffmanCode {
5658 bits: 1,
5659 value: 32,
5660 },
5661 HuffmanCode {
5662 bits: 2,
5663 value: 33,
5664 },
5665 HuffmanCode {
5666 bits: 1,
5667 value: 32,
5668 },
5669 HuffmanCode {
5670 bits: 2,
5671 value: 28,
5672 },
5673 HuffmanCode {
5674 bits: 1,
5675 value: 32,
5676 },
5677 HuffmanCode {
5678 bits: 2,
5679 value: 33,
5680 },
5681 HuffmanCode {
5682 bits: 1,
5683 value: 32,
5684 },
5685 HuffmanCode {
5686 bits: 2,
5687 value: 28,
5688 },
5689 HuffmanCode {
5690 bits: 1,
5691 value: 32,
5692 },
5693 HuffmanCode {
5694 bits: 2,
5695 value: 33,
5696 },
5697 HuffmanCode {
5698 bits: 1,
5699 value: 32,
5700 },
5701 HuffmanCode {
5702 bits: 2,
5703 value: 28,
5704 },
5705 HuffmanCode {
5706 bits: 1,
5707 value: 32,
5708 },
5709 HuffmanCode {
5710 bits: 2,
5711 value: 33,
5712 },
5713 HuffmanCode {
5714 bits: 1,
5715 value: 32,
5716 },
5717 HuffmanCode {
5718 bits: 2,
5719 value: 28,
5720 },
5721 HuffmanCode {
5722 bits: 1,
5723 value: 32,
5724 },
5725 HuffmanCode {
5726 bits: 2,
5727 value: 33,
5728 },
5729 HuffmanCode {
5730 bits: 1,
5731 value: 32,
5732 },
5733 HuffmanCode {
5734 bits: 2,
5735 value: 28,
5736 },
5737 HuffmanCode {
5738 bits: 1,
5739 value: 32,
5740 },
5741 HuffmanCode {
5742 bits: 2,
5743 value: 33,
5744 },
5745 HuffmanCode {
5746 bits: 1,
5747 value: 32,
5748 },
5749 HuffmanCode {
5750 bits: 2,
5751 value: 28,
5752 },
5753 HuffmanCode {
5754 bits: 1,
5755 value: 32,
5756 },
5757 HuffmanCode {
5758 bits: 2,
5759 value: 33,
5760 },
5761 HuffmanCode {
5762 bits: 1,
5763 value: 32,
5764 },
5765 HuffmanCode {
5766 bits: 2,
5767 value: 28,
5768 },
5769 HuffmanCode {
5770 bits: 1,
5771 value: 32,
5772 },
5773 HuffmanCode {
5774 bits: 2,
5775 value: 33,
5776 },
5777 HuffmanCode {
5778 bits: 1,
5779 value: 32,
5780 },
5781 HuffmanCode {
5782 bits: 2,
5783 value: 28,
5784 },
5785 HuffmanCode {
5786 bits: 1,
5787 value: 32,
5788 },
5789 HuffmanCode {
5790 bits: 2,
5791 value: 33,
5792 },
5793 HuffmanCode {
5794 bits: 1,
5795 value: 32,
5796 },
5797 HuffmanCode {
5798 bits: 2,
5799 value: 28,
5800 },
5801 HuffmanCode {
5802 bits: 1,
5803 value: 32,
5804 },
5805 HuffmanCode {
5806 bits: 2,
5807 value: 33,
5808 },
5809 HuffmanCode {
5810 bits: 1,
5811 value: 32,
5812 },
5813 HuffmanCode {
5814 bits: 2,
5815 value: 28,
5816 },
5817 HuffmanCode {
5818 bits: 1,
5819 value: 32,
5820 },
5821 HuffmanCode {
5822 bits: 2,
5823 value: 33,
5824 },
5825 HuffmanCode {
5826 bits: 1,
5827 value: 32,
5828 },
5829 HuffmanCode {
5830 bits: 2,
5831 value: 28,
5832 },
5833 HuffmanCode {
5834 bits: 1,
5835 value: 32,
5836 },
5837 HuffmanCode {
5838 bits: 2,
5839 value: 33,
5840 },
5841 HuffmanCode {
5842 bits: 1,
5843 value: 32,
5844 },
5845 HuffmanCode {
5846 bits: 2,
5847 value: 28,
5848 },
5849 HuffmanCode {
5850 bits: 1,
5851 value: 32,
5852 },
5853 HuffmanCode {
5854 bits: 2,
5855 value: 33,
5856 },
5857 HuffmanCode {
5858 bits: 1,
5859 value: 32,
5860 },
5861 HuffmanCode {
5862 bits: 2,
5863 value: 28,
5864 },
5865 HuffmanCode {
5866 bits: 1,
5867 value: 32,
5868 },
5869 HuffmanCode {
5870 bits: 2,
5871 value: 33,
5872 },
5873 HuffmanCode {
5874 bits: 1,
5875 value: 32,
5876 },
5877 HuffmanCode {
5878 bits: 2,
5879 value: 28,
5880 },
5881 HuffmanCode {
5882 bits: 1,
5883 value: 32,
5884 },
5885 HuffmanCode {
5886 bits: 2,
5887 value: 33,
5888 },
5889 HuffmanCode {
5890 bits: 1,
5891 value: 32,
5892 },
5893 HuffmanCode {
5894 bits: 2,
5895 value: 28,
5896 },
5897 HuffmanCode {
5898 bits: 1,
5899 value: 32,
5900 },
5901 HuffmanCode {
5902 bits: 2,
5903 value: 33,
5904 },
5905 HuffmanCode {
5906 bits: 1,
5907 value: 32,
5908 },
5909 HuffmanCode {
5910 bits: 2,
5911 value: 28,
5912 },
5913 HuffmanCode {
5914 bits: 1,
5915 value: 32,
5916 },
5917 HuffmanCode {
5918 bits: 2,
5919 value: 33,
5920 },
5921 HuffmanCode {
5922 bits: 1,
5923 value: 32,
5924 },
5925 HuffmanCode {
5926 bits: 2,
5927 value: 28,
5928 },
5929 HuffmanCode {
5930 bits: 1,
5931 value: 32,
5932 },
5933 HuffmanCode {
5934 bits: 2,
5935 value: 33,
5936 },
5937 HuffmanCode {
5938 bits: 1,
5939 value: 32,
5940 },
5941 HuffmanCode {
5942 bits: 2,
5943 value: 28,
5944 },
5945 HuffmanCode {
5946 bits: 1,
5947 value: 32,
5948 },
5949 HuffmanCode {
5950 bits: 2,
5951 value: 33,
5952 },
5953 HuffmanCode {
5954 bits: 1,
5955 value: 32,
5956 },
5957 HuffmanCode {
5958 bits: 2,
5959 value: 28,
5960 },
5961 HuffmanCode {
5962 bits: 1,
5963 value: 32,
5964 },
5965 HuffmanCode {
5966 bits: 2,
5967 value: 33,
5968 },
5969 HuffmanCode {
5970 bits: 1,
5971 value: 32,
5972 },
5973 HuffmanCode {
5974 bits: 2,
5975 value: 28,
5976 },
5977 HuffmanCode {
5978 bits: 1,
5979 value: 32,
5980 },
5981 HuffmanCode {
5982 bits: 2,
5983 value: 33,
5984 },
5985 HuffmanCode {
5986 bits: 1,
5987 value: 32,
5988 },
5989 HuffmanCode {
5990 bits: 2,
5991 value: 28,
5992 },
5993 HuffmanCode {
5994 bits: 1,
5995 value: 32,
5996 },
5997 HuffmanCode {
5998 bits: 2,
5999 value: 33,
6000 },
6001 HuffmanCode {
6002 bits: 1,
6003 value: 32,
6004 },
6005 HuffmanCode {
6006 bits: 2,
6007 value: 28,
6008 },
6009 HuffmanCode {
6010 bits: 1,
6011 value: 32,
6012 },
6013 HuffmanCode {
6014 bits: 2,
6015 value: 33,
6016 },
6017 HuffmanCode {
6018 bits: 1,
6019 value: 32,
6020 },
6021 HuffmanCode {
6022 bits: 2,
6023 value: 28,
6024 },
6025 HuffmanCode {
6026 bits: 1,
6027 value: 32,
6028 },
6029 HuffmanCode {
6030 bits: 2,
6031 value: 33,
6032 },
6033 HuffmanCode {
6034 bits: 1,
6035 value: 32,
6036 },
6037 HuffmanCode {
6038 bits: 2,
6039 value: 28,
6040 },
6041 HuffmanCode {
6042 bits: 1,
6043 value: 32,
6044 },
6045 HuffmanCode {
6046 bits: 2,
6047 value: 33,
6048 },
6049 HuffmanCode {
6050 bits: 1,
6051 value: 32,
6052 },
6053 HuffmanCode {
6054 bits: 2,
6055 value: 28,
6056 },
6057 HuffmanCode {
6058 bits: 1,
6059 value: 32,
6060 },
6061 HuffmanCode {
6062 bits: 2,
6063 value: 33,
6064 },
6065 HuffmanCode {
6066 bits: 1,
6067 value: 32,
6068 },
6069 HuffmanCode {
6070 bits: 2,
6071 value: 28,
6072 },
6073 HuffmanCode {
6074 bits: 1,
6075 value: 32,
6076 },
6077 HuffmanCode {
6078 bits: 2,
6079 value: 33,
6080 },
6081 HuffmanCode {
6082 bits: 1,
6083 value: 32,
6084 },
6085 HuffmanCode {
6086 bits: 2,
6087 value: 28,
6088 },
6089 HuffmanCode {
6090 bits: 1,
6091 value: 32,
6092 },
6093 HuffmanCode {
6094 bits: 2,
6095 value: 33,
6096 },
6097 HuffmanCode {
6098 bits: 1,
6099 value: 32,
6100 },
6101 HuffmanCode {
6102 bits: 2,
6103 value: 28,
6104 },
6105 HuffmanCode {
6106 bits: 1,
6107 value: 32,
6108 },
6109 HuffmanCode {
6110 bits: 2,
6111 value: 33,
6112 },
6113 HuffmanCode {
6114 bits: 1,
6115 value: 32,
6116 },
6117 HuffmanCode {
6118 bits: 2,
6119 value: 28,
6120 },
6121 HuffmanCode {
6122 bits: 1,
6123 value: 32,
6124 },
6125 HuffmanCode {
6126 bits: 2,
6127 value: 33,
6128 },
6129 HuffmanCode {
6130 bits: 1,
6131 value: 32,
6132 },
6133 HuffmanCode {
6134 bits: 2,
6135 value: 28,
6136 },
6137 HuffmanCode {
6138 bits: 1,
6139 value: 32,
6140 },
6141 HuffmanCode {
6142 bits: 2,
6143 value: 33,
6144 },
6145 HuffmanCode {
6146 bits: 1,
6147 value: 32,
6148 },
6149 HuffmanCode {
6150 bits: 2,
6151 value: 28,
6152 },
6153 HuffmanCode {
6154 bits: 1,
6155 value: 32,
6156 },
6157 HuffmanCode {
6158 bits: 2,
6159 value: 33,
6160 },
6161 HuffmanCode {
6162 bits: 1,
6163 value: 32,
6164 },
6165 HuffmanCode {
6166 bits: 2,
6167 value: 28,
6168 },
6169 HuffmanCode {
6170 bits: 1,
6171 value: 32,
6172 },
6173 HuffmanCode {
6174 bits: 2,
6175 value: 33,
6176 },
6177 HuffmanCode {
6178 bits: 1,
6179 value: 32,
6180 },
6181 HuffmanCode {
6182 bits: 2,
6183 value: 28,
6184 },
6185 HuffmanCode {
6186 bits: 1,
6187 value: 32,
6188 },
6189 HuffmanCode {
6190 bits: 2,
6191 value: 33,
6192 },
6193 HuffmanCode {
6194 bits: 1,
6195 value: 32,
6196 },
6197 HuffmanCode {
6198 bits: 2,
6199 value: 28,
6200 },
6201 HuffmanCode {
6202 bits: 1,
6203 value: 32,
6204 },
6205 HuffmanCode {
6206 bits: 2,
6207 value: 33,
6208 },
6209 HuffmanCode {
6210 bits: 1,
6211 value: 32,
6212 },
6213 HuffmanCode {
6214 bits: 2,
6215 value: 28,
6216 },
6217 HuffmanCode {
6218 bits: 1,
6219 value: 32,
6220 },
6221 HuffmanCode {
6222 bits: 2,
6223 value: 33,
6224 },
6225 HuffmanCode {
6226 bits: 1,
6227 value: 32,
6228 },
6229 HuffmanCode {
6230 bits: 2,
6231 value: 28,
6232 },
6233 HuffmanCode {
6234 bits: 1,
6235 value: 32,
6236 },
6237 HuffmanCode {
6238 bits: 2,
6239 value: 33,
6240 },
6241 HuffmanCode {
6242 bits: 1,
6243 value: 32,
6244 },
6245 HuffmanCode {
6246 bits: 2,
6247 value: 28,
6248 },
6249 HuffmanCode {
6250 bits: 1,
6251 value: 32,
6252 },
6253 HuffmanCode {
6254 bits: 2,
6255 value: 33,
6256 },
6257 HuffmanCode {
6258 bits: 1,
6259 value: 32,
6260 },
6261 HuffmanCode {
6262 bits: 2,
6263 value: 28,
6264 },
6265 HuffmanCode {
6266 bits: 1,
6267 value: 32,
6268 },
6269 HuffmanCode {
6270 bits: 2,
6271 value: 33,
6272 },
6273 HuffmanCode {
6274 bits: 1,
6275 value: 32,
6276 },
6277 HuffmanCode {
6278 bits: 2,
6279 value: 28,
6280 },
6281 HuffmanCode {
6282 bits: 1,
6283 value: 32,
6284 },
6285 HuffmanCode {
6286 bits: 2,
6287 value: 33,
6288 },
6289 HuffmanCode {
6290 bits: 1,
6291 value: 32,
6292 },
6293 HuffmanCode {
6294 bits: 2,
6295 value: 28,
6296 },
6297 HuffmanCode {
6298 bits: 1,
6299 value: 32,
6300 },
6301 HuffmanCode {
6302 bits: 2,
6303 value: 33,
6304 },
6305 HuffmanCode {
6306 bits: 1,
6307 value: 32,
6308 },
6309 HuffmanCode {
6310 bits: 2,
6311 value: 28,
6312 },
6313 HuffmanCode {
6314 bits: 1,
6315 value: 32,
6316 },
6317 HuffmanCode {
6318 bits: 2,
6319 value: 33,
6320 },
6321 HuffmanCode {
6322 bits: 1,
6323 value: 32,
6324 },
6325 HuffmanCode {
6326 bits: 2,
6327 value: 28,
6328 },
6329 HuffmanCode {
6330 bits: 1,
6331 value: 32,
6332 },
6333 HuffmanCode {
6334 bits: 2,
6335 value: 33,
6336 },
6337 HuffmanCode {
6338 bits: 1,
6339 value: 32,
6340 },
6341 HuffmanCode {
6342 bits: 2,
6343 value: 28,
6344 },
6345 HuffmanCode {
6346 bits: 1,
6347 value: 32,
6348 },
6349 HuffmanCode {
6350 bits: 2,
6351 value: 33,
6352 },
6353 HuffmanCode {
6354 bits: 1,
6355 value: 32,
6356 },
6357 HuffmanCode {
6358 bits: 2,
6359 value: 28,
6360 },
6361 HuffmanCode {
6362 bits: 1,
6363 value: 32,
6364 },
6365 HuffmanCode {
6366 bits: 2,
6367 value: 33,
6368 },
6369 HuffmanCode {
6370 bits: 1,
6371 value: 32,
6372 },
6373 HuffmanCode {
6374 bits: 2,
6375 value: 28,
6376 },
6377 HuffmanCode {
6378 bits: 1,
6379 value: 32,
6380 },
6381 HuffmanCode {
6382 bits: 2,
6383 value: 33,
6384 },
6385 HuffmanCode {
6386 bits: 1,
6387 value: 32,
6388 },
6389 HuffmanCode {
6390 bits: 2,
6391 value: 28,
6392 },
6393 HuffmanCode {
6394 bits: 1,
6395 value: 32,
6396 },
6397 HuffmanCode {
6398 bits: 2,
6399 value: 33,
6400 },
6401 HuffmanCode {
6402 bits: 1,
6403 value: 32,
6404 },
6405 HuffmanCode {
6406 bits: 2,
6407 value: 28,
6408 },
6409 HuffmanCode {
6410 bits: 1,
6411 value: 32,
6412 },
6413 HuffmanCode {
6414 bits: 2,
6415 value: 33,
6416 },
6417 HuffmanCode {
6418 bits: 1,
6419 value: 32,
6420 },
6421 HuffmanCode {
6422 bits: 2,
6423 value: 28,
6424 },
6425 HuffmanCode {
6426 bits: 1,
6427 value: 32,
6428 },
6429 HuffmanCode {
6430 bits: 2,
6431 value: 33,
6432 },
6433 HuffmanCode {
6434 bits: 1,
6435 value: 32,
6436 },
6437 HuffmanCode {
6438 bits: 2,
6439 value: 28,
6440 },
6441 HuffmanCode {
6442 bits: 1,
6443 value: 32,
6444 },
6445 HuffmanCode {
6446 bits: 2,
6447 value: 33,
6448 },
6449 HuffmanCode {
6450 bits: 1,
6451 value: 32,
6452 },
6453 HuffmanCode {
6454 bits: 2,
6455 value: 28,
6456 },
6457 HuffmanCode {
6458 bits: 1,
6459 value: 32,
6460 },
6461 HuffmanCode {
6462 bits: 2,
6463 value: 33,
6464 },
6465 HuffmanCode {
6466 bits: 1,
6467 value: 32,
6468 },
6469 HuffmanCode {
6470 bits: 2,
6471 value: 28,
6472 },
6473 HuffmanCode {
6474 bits: 1,
6475 value: 32,
6476 },
6477 HuffmanCode {
6478 bits: 2,
6479 value: 33,
6480 },
6481 HuffmanCode {
6482 bits: 1,
6483 value: 32,
6484 },
6485 HuffmanCode {
6486 bits: 2,
6487 value: 28,
6488 },
6489 HuffmanCode {
6490 bits: 1,
6491 value: 32,
6492 },
6493 HuffmanCode {
6494 bits: 2,
6495 value: 33,
6496 },
6497 HuffmanCode {
6498 bits: 1,
6499 value: 32,
6500 },
6501 HuffmanCode {
6502 bits: 2,
6503 value: 28,
6504 },
6505 HuffmanCode {
6506 bits: 1,
6507 value: 32,
6508 },
6509 HuffmanCode {
6510 bits: 2,
6511 value: 33,
6512 },
6513 HuffmanCode {
6514 bits: 1,
6515 value: 32,
6516 },
6517 HuffmanCode {
6518 bits: 2,
6519 value: 28,
6520 },
6521 HuffmanCode {
6522 bits: 1,
6523 value: 32,
6524 },
6525 HuffmanCode {
6526 bits: 2,
6527 value: 33,
6528 },
6529 HuffmanCode {
6530 bits: 1,
6531 value: 32,
6532 },
6533 HuffmanCode {
6534 bits: 2,
6535 value: 28,
6536 },
6537 HuffmanCode {
6538 bits: 1,
6539 value: 32,
6540 },
6541 HuffmanCode {
6542 bits: 2,
6543 value: 33,
6544 },
6545 HuffmanCode {
6546 bits: 1,
6547 value: 32,
6548 },
6549 HuffmanCode {
6550 bits: 2,
6551 value: 28,
6552 },
6553 HuffmanCode {
6554 bits: 1,
6555 value: 32,
6556 },
6557 HuffmanCode {
6558 bits: 2,
6559 value: 33,
6560 },
6561 HuffmanCode {
6562 bits: 1,
6563 value: 32,
6564 },
6565 HuffmanCode {
6566 bits: 2,
6567 value: 28,
6568 },
6569 HuffmanCode {
6570 bits: 1,
6571 value: 32,
6572 },
6573 HuffmanCode {
6574 bits: 2,
6575 value: 33,
6576 },
6577 HuffmanCode {
6578 bits: 1,
6579 value: 32,
6580 },
6581 HuffmanCode {
6582 bits: 2,
6583 value: 28,
6584 },
6585 HuffmanCode {
6586 bits: 1,
6587 value: 32,
6588 },
6589 HuffmanCode {
6590 bits: 2,
6591 value: 33,
6592 },
6593 HuffmanCode {
6594 bits: 1,
6595 value: 32,
6596 },
6597 HuffmanCode {
6598 bits: 2,
6599 value: 28,
6600 },
6601 HuffmanCode {
6602 bits: 1,
6603 value: 32,
6604 },
6605 HuffmanCode {
6606 bits: 2,
6607 value: 33,
6608 },
6609 HuffmanCode {
6610 bits: 1,
6611 value: 32,
6612 },
6613 HuffmanCode {
6614 bits: 2,
6615 value: 28,
6616 },
6617 HuffmanCode {
6618 bits: 1,
6619 value: 32,
6620 },
6621 HuffmanCode {
6622 bits: 2,
6623 value: 33,
6624 },
6625 HuffmanCode {
6626 bits: 1,
6627 value: 32,
6628 },
6629 HuffmanCode {
6630 bits: 2,
6631 value: 28,
6632 },
6633 HuffmanCode {
6634 bits: 1,
6635 value: 32,
6636 },
6637 HuffmanCode {
6638 bits: 2,
6639 value: 33,
6640 },
6641 HuffmanCode {
6642 bits: 1,
6643 value: 32,
6644 },
6645 HuffmanCode {
6646 bits: 2,
6647 value: 28,
6648 },
6649 HuffmanCode {
6650 bits: 1,
6651 value: 32,
6652 },
6653 HuffmanCode {
6654 bits: 2,
6655 value: 33,
6656 },
6657 HuffmanCode {
6658 bits: 1,
6659 value: 32,
6660 },
6661 HuffmanCode {
6662 bits: 2,
6663 value: 28,
6664 },
6665 HuffmanCode {
6666 bits: 1,
6667 value: 32,
6668 },
6669 HuffmanCode {
6670 bits: 2,
6671 value: 33,
6672 }];
6673 let mut val: [u16; 3] = [32, 28, 33];
6674 let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 2);
6675 assert_eq!(goal_size, 256);
6676 for index in 0..end_table.len() {
6677 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
6678 [index, end_table[index].bits as usize, end_table[index].value as usize]);
6679 assert!(table[index] == end_table[index]);
6680 }
6681}
6682#[test]
6683fn simple_3() {
6684 let mut table: [HuffmanCode; 256] = [HuffmanCode {
6685 bits: 0,
6686 value: 0,
6687 }; 256];
6688 let end_table: [HuffmanCode; 256] = [HuffmanCode {
6689 bits: 2,
6690 value: 6,
6691 },
6692 HuffmanCode {
6693 bits: 2,
6694 value: 59,
6695 },
6696 HuffmanCode {
6697 bits: 2,
6698 value: 51,
6699 },
6700 HuffmanCode {
6701 bits: 2,
6702 value: 219,
6703 },
6704 HuffmanCode {
6705 bits: 2,
6706 value: 6,
6707 },
6708 HuffmanCode {
6709 bits: 2,
6710 value: 59,
6711 },
6712 HuffmanCode {
6713 bits: 2,
6714 value: 51,
6715 },
6716 HuffmanCode {
6717 bits: 2,
6718 value: 219,
6719 },
6720 HuffmanCode {
6721 bits: 2,
6722 value: 6,
6723 },
6724 HuffmanCode {
6725 bits: 2,
6726 value: 59,
6727 },
6728 HuffmanCode {
6729 bits: 2,
6730 value: 51,
6731 },
6732 HuffmanCode {
6733 bits: 2,
6734 value: 219,
6735 },
6736 HuffmanCode {
6737 bits: 2,
6738 value: 6,
6739 },
6740 HuffmanCode {
6741 bits: 2,
6742 value: 59,
6743 },
6744 HuffmanCode {
6745 bits: 2,
6746 value: 51,
6747 },
6748 HuffmanCode {
6749 bits: 2,
6750 value: 219,
6751 },
6752 HuffmanCode {
6753 bits: 2,
6754 value: 6,
6755 },
6756 HuffmanCode {
6757 bits: 2,
6758 value: 59,
6759 },
6760 HuffmanCode {
6761 bits: 2,
6762 value: 51,
6763 },
6764 HuffmanCode {
6765 bits: 2,
6766 value: 219,
6767 },
6768 HuffmanCode {
6769 bits: 2,
6770 value: 6,
6771 },
6772 HuffmanCode {
6773 bits: 2,
6774 value: 59,
6775 },
6776 HuffmanCode {
6777 bits: 2,
6778 value: 51,
6779 },
6780 HuffmanCode {
6781 bits: 2,
6782 value: 219,
6783 },
6784 HuffmanCode {
6785 bits: 2,
6786 value: 6,
6787 },
6788 HuffmanCode {
6789 bits: 2,
6790 value: 59,
6791 },
6792 HuffmanCode {
6793 bits: 2,
6794 value: 51,
6795 },
6796 HuffmanCode {
6797 bits: 2,
6798 value: 219,
6799 },
6800 HuffmanCode {
6801 bits: 2,
6802 value: 6,
6803 },
6804 HuffmanCode {
6805 bits: 2,
6806 value: 59,
6807 },
6808 HuffmanCode {
6809 bits: 2,
6810 value: 51,
6811 },
6812 HuffmanCode {
6813 bits: 2,
6814 value: 219,
6815 },
6816 HuffmanCode {
6817 bits: 2,
6818 value: 6,
6819 },
6820 HuffmanCode {
6821 bits: 2,
6822 value: 59,
6823 },
6824 HuffmanCode {
6825 bits: 2,
6826 value: 51,
6827 },
6828 HuffmanCode {
6829 bits: 2,
6830 value: 219,
6831 },
6832 HuffmanCode {
6833 bits: 2,
6834 value: 6,
6835 },
6836 HuffmanCode {
6837 bits: 2,
6838 value: 59,
6839 },
6840 HuffmanCode {
6841 bits: 2,
6842 value: 51,
6843 },
6844 HuffmanCode {
6845 bits: 2,
6846 value: 219,
6847 },
6848 HuffmanCode {
6849 bits: 2,
6850 value: 6,
6851 },
6852 HuffmanCode {
6853 bits: 2,
6854 value: 59,
6855 },
6856 HuffmanCode {
6857 bits: 2,
6858 value: 51,
6859 },
6860 HuffmanCode {
6861 bits: 2,
6862 value: 219,
6863 },
6864 HuffmanCode {
6865 bits: 2,
6866 value: 6,
6867 },
6868 HuffmanCode {
6869 bits: 2,
6870 value: 59,
6871 },
6872 HuffmanCode {
6873 bits: 2,
6874 value: 51,
6875 },
6876 HuffmanCode {
6877 bits: 2,
6878 value: 219,
6879 },
6880 HuffmanCode {
6881 bits: 2,
6882 value: 6,
6883 },
6884 HuffmanCode {
6885 bits: 2,
6886 value: 59,
6887 },
6888 HuffmanCode {
6889 bits: 2,
6890 value: 51,
6891 },
6892 HuffmanCode {
6893 bits: 2,
6894 value: 219,
6895 },
6896 HuffmanCode {
6897 bits: 2,
6898 value: 6,
6899 },
6900 HuffmanCode {
6901 bits: 2,
6902 value: 59,
6903 },
6904 HuffmanCode {
6905 bits: 2,
6906 value: 51,
6907 },
6908 HuffmanCode {
6909 bits: 2,
6910 value: 219,
6911 },
6912 HuffmanCode {
6913 bits: 2,
6914 value: 6,
6915 },
6916 HuffmanCode {
6917 bits: 2,
6918 value: 59,
6919 },
6920 HuffmanCode {
6921 bits: 2,
6922 value: 51,
6923 },
6924 HuffmanCode {
6925 bits: 2,
6926 value: 219,
6927 },
6928 HuffmanCode {
6929 bits: 2,
6930 value: 6,
6931 },
6932 HuffmanCode {
6933 bits: 2,
6934 value: 59,
6935 },
6936 HuffmanCode {
6937 bits: 2,
6938 value: 51,
6939 },
6940 HuffmanCode {
6941 bits: 2,
6942 value: 219,
6943 },
6944 HuffmanCode {
6945 bits: 2,
6946 value: 6,
6947 },
6948 HuffmanCode {
6949 bits: 2,
6950 value: 59,
6951 },
6952 HuffmanCode {
6953 bits: 2,
6954 value: 51,
6955 },
6956 HuffmanCode {
6957 bits: 2,
6958 value: 219,
6959 },
6960 HuffmanCode {
6961 bits: 2,
6962 value: 6,
6963 },
6964 HuffmanCode {
6965 bits: 2,
6966 value: 59,
6967 },
6968 HuffmanCode {
6969 bits: 2,
6970 value: 51,
6971 },
6972 HuffmanCode {
6973 bits: 2,
6974 value: 219,
6975 },
6976 HuffmanCode {
6977 bits: 2,
6978 value: 6,
6979 },
6980 HuffmanCode {
6981 bits: 2,
6982 value: 59,
6983 },
6984 HuffmanCode {
6985 bits: 2,
6986 value: 51,
6987 },
6988 HuffmanCode {
6989 bits: 2,
6990 value: 219,
6991 },
6992 HuffmanCode {
6993 bits: 2,
6994 value: 6,
6995 },
6996 HuffmanCode {
6997 bits: 2,
6998 value: 59,
6999 },
7000 HuffmanCode {
7001 bits: 2,
7002 value: 51,
7003 },
7004 HuffmanCode {
7005 bits: 2,
7006 value: 219,
7007 },
7008 HuffmanCode {
7009 bits: 2,
7010 value: 6,
7011 },
7012 HuffmanCode {
7013 bits: 2,
7014 value: 59,
7015 },
7016 HuffmanCode {
7017 bits: 2,
7018 value: 51,
7019 },
7020 HuffmanCode {
7021 bits: 2,
7022 value: 219,
7023 },
7024 HuffmanCode {
7025 bits: 2,
7026 value: 6,
7027 },
7028 HuffmanCode {
7029 bits: 2,
7030 value: 59,
7031 },
7032 HuffmanCode {
7033 bits: 2,
7034 value: 51,
7035 },
7036 HuffmanCode {
7037 bits: 2,
7038 value: 219,
7039 },
7040 HuffmanCode {
7041 bits: 2,
7042 value: 6,
7043 },
7044 HuffmanCode {
7045 bits: 2,
7046 value: 59,
7047 },
7048 HuffmanCode {
7049 bits: 2,
7050 value: 51,
7051 },
7052 HuffmanCode {
7053 bits: 2,
7054 value: 219,
7055 },
7056 HuffmanCode {
7057 bits: 2,
7058 value: 6,
7059 },
7060 HuffmanCode {
7061 bits: 2,
7062 value: 59,
7063 },
7064 HuffmanCode {
7065 bits: 2,
7066 value: 51,
7067 },
7068 HuffmanCode {
7069 bits: 2,
7070 value: 219,
7071 },
7072 HuffmanCode {
7073 bits: 2,
7074 value: 6,
7075 },
7076 HuffmanCode {
7077 bits: 2,
7078 value: 59,
7079 },
7080 HuffmanCode {
7081 bits: 2,
7082 value: 51,
7083 },
7084 HuffmanCode {
7085 bits: 2,
7086 value: 219,
7087 },
7088 HuffmanCode {
7089 bits: 2,
7090 value: 6,
7091 },
7092 HuffmanCode {
7093 bits: 2,
7094 value: 59,
7095 },
7096 HuffmanCode {
7097 bits: 2,
7098 value: 51,
7099 },
7100 HuffmanCode {
7101 bits: 2,
7102 value: 219,
7103 },
7104 HuffmanCode {
7105 bits: 2,
7106 value: 6,
7107 },
7108 HuffmanCode {
7109 bits: 2,
7110 value: 59,
7111 },
7112 HuffmanCode {
7113 bits: 2,
7114 value: 51,
7115 },
7116 HuffmanCode {
7117 bits: 2,
7118 value: 219,
7119 },
7120 HuffmanCode {
7121 bits: 2,
7122 value: 6,
7123 },
7124 HuffmanCode {
7125 bits: 2,
7126 value: 59,
7127 },
7128 HuffmanCode {
7129 bits: 2,
7130 value: 51,
7131 },
7132 HuffmanCode {
7133 bits: 2,
7134 value: 219,
7135 },
7136 HuffmanCode {
7137 bits: 2,
7138 value: 6,
7139 },
7140 HuffmanCode {
7141 bits: 2,
7142 value: 59,
7143 },
7144 HuffmanCode {
7145 bits: 2,
7146 value: 51,
7147 },
7148 HuffmanCode {
7149 bits: 2,
7150 value: 219,
7151 },
7152 HuffmanCode {
7153 bits: 2,
7154 value: 6,
7155 },
7156 HuffmanCode {
7157 bits: 2,
7158 value: 59,
7159 },
7160 HuffmanCode {
7161 bits: 2,
7162 value: 51,
7163 },
7164 HuffmanCode {
7165 bits: 2,
7166 value: 219,
7167 },
7168 HuffmanCode {
7169 bits: 2,
7170 value: 6,
7171 },
7172 HuffmanCode {
7173 bits: 2,
7174 value: 59,
7175 },
7176 HuffmanCode {
7177 bits: 2,
7178 value: 51,
7179 },
7180 HuffmanCode {
7181 bits: 2,
7182 value: 219,
7183 },
7184 HuffmanCode {
7185 bits: 2,
7186 value: 6,
7187 },
7188 HuffmanCode {
7189 bits: 2,
7190 value: 59,
7191 },
7192 HuffmanCode {
7193 bits: 2,
7194 value: 51,
7195 },
7196 HuffmanCode {
7197 bits: 2,
7198 value: 219,
7199 },
7200 HuffmanCode {
7201 bits: 2,
7202 value: 6,
7203 },
7204 HuffmanCode {
7205 bits: 2,
7206 value: 59,
7207 },
7208 HuffmanCode {
7209 bits: 2,
7210 value: 51,
7211 },
7212 HuffmanCode {
7213 bits: 2,
7214 value: 219,
7215 },
7216 HuffmanCode {
7217 bits: 2,
7218 value: 6,
7219 },
7220 HuffmanCode {
7221 bits: 2,
7222 value: 59,
7223 },
7224 HuffmanCode {
7225 bits: 2,
7226 value: 51,
7227 },
7228 HuffmanCode {
7229 bits: 2,
7230 value: 219,
7231 },
7232 HuffmanCode {
7233 bits: 2,
7234 value: 6,
7235 },
7236 HuffmanCode {
7237 bits: 2,
7238 value: 59,
7239 },
7240 HuffmanCode {
7241 bits: 2,
7242 value: 51,
7243 },
7244 HuffmanCode {
7245 bits: 2,
7246 value: 219,
7247 },
7248 HuffmanCode {
7249 bits: 2,
7250 value: 6,
7251 },
7252 HuffmanCode {
7253 bits: 2,
7254 value: 59,
7255 },
7256 HuffmanCode {
7257 bits: 2,
7258 value: 51,
7259 },
7260 HuffmanCode {
7261 bits: 2,
7262 value: 219,
7263 },
7264 HuffmanCode {
7265 bits: 2,
7266 value: 6,
7267 },
7268 HuffmanCode {
7269 bits: 2,
7270 value: 59,
7271 },
7272 HuffmanCode {
7273 bits: 2,
7274 value: 51,
7275 },
7276 HuffmanCode {
7277 bits: 2,
7278 value: 219,
7279 },
7280 HuffmanCode {
7281 bits: 2,
7282 value: 6,
7283 },
7284 HuffmanCode {
7285 bits: 2,
7286 value: 59,
7287 },
7288 HuffmanCode {
7289 bits: 2,
7290 value: 51,
7291 },
7292 HuffmanCode {
7293 bits: 2,
7294 value: 219,
7295 },
7296 HuffmanCode {
7297 bits: 2,
7298 value: 6,
7299 },
7300 HuffmanCode {
7301 bits: 2,
7302 value: 59,
7303 },
7304 HuffmanCode {
7305 bits: 2,
7306 value: 51,
7307 },
7308 HuffmanCode {
7309 bits: 2,
7310 value: 219,
7311 },
7312 HuffmanCode {
7313 bits: 2,
7314 value: 6,
7315 },
7316 HuffmanCode {
7317 bits: 2,
7318 value: 59,
7319 },
7320 HuffmanCode {
7321 bits: 2,
7322 value: 51,
7323 },
7324 HuffmanCode {
7325 bits: 2,
7326 value: 219,
7327 },
7328 HuffmanCode {
7329 bits: 2,
7330 value: 6,
7331 },
7332 HuffmanCode {
7333 bits: 2,
7334 value: 59,
7335 },
7336 HuffmanCode {
7337 bits: 2,
7338 value: 51,
7339 },
7340 HuffmanCode {
7341 bits: 2,
7342 value: 219,
7343 },
7344 HuffmanCode {
7345 bits: 2,
7346 value: 6,
7347 },
7348 HuffmanCode {
7349 bits: 2,
7350 value: 59,
7351 },
7352 HuffmanCode {
7353 bits: 2,
7354 value: 51,
7355 },
7356 HuffmanCode {
7357 bits: 2,
7358 value: 219,
7359 },
7360 HuffmanCode {
7361 bits: 2,
7362 value: 6,
7363 },
7364 HuffmanCode {
7365 bits: 2,
7366 value: 59,
7367 },
7368 HuffmanCode {
7369 bits: 2,
7370 value: 51,
7371 },
7372 HuffmanCode {
7373 bits: 2,
7374 value: 219,
7375 },
7376 HuffmanCode {
7377 bits: 2,
7378 value: 6,
7379 },
7380 HuffmanCode {
7381 bits: 2,
7382 value: 59,
7383 },
7384 HuffmanCode {
7385 bits: 2,
7386 value: 51,
7387 },
7388 HuffmanCode {
7389 bits: 2,
7390 value: 219,
7391 },
7392 HuffmanCode {
7393 bits: 2,
7394 value: 6,
7395 },
7396 HuffmanCode {
7397 bits: 2,
7398 value: 59,
7399 },
7400 HuffmanCode {
7401 bits: 2,
7402 value: 51,
7403 },
7404 HuffmanCode {
7405 bits: 2,
7406 value: 219,
7407 },
7408 HuffmanCode {
7409 bits: 2,
7410 value: 6,
7411 },
7412 HuffmanCode {
7413 bits: 2,
7414 value: 59,
7415 },
7416 HuffmanCode {
7417 bits: 2,
7418 value: 51,
7419 },
7420 HuffmanCode {
7421 bits: 2,
7422 value: 219,
7423 },
7424 HuffmanCode {
7425 bits: 2,
7426 value: 6,
7427 },
7428 HuffmanCode {
7429 bits: 2,
7430 value: 59,
7431 },
7432 HuffmanCode {
7433 bits: 2,
7434 value: 51,
7435 },
7436 HuffmanCode {
7437 bits: 2,
7438 value: 219,
7439 },
7440 HuffmanCode {
7441 bits: 2,
7442 value: 6,
7443 },
7444 HuffmanCode {
7445 bits: 2,
7446 value: 59,
7447 },
7448 HuffmanCode {
7449 bits: 2,
7450 value: 51,
7451 },
7452 HuffmanCode {
7453 bits: 2,
7454 value: 219,
7455 },
7456 HuffmanCode {
7457 bits: 2,
7458 value: 6,
7459 },
7460 HuffmanCode {
7461 bits: 2,
7462 value: 59,
7463 },
7464 HuffmanCode {
7465 bits: 2,
7466 value: 51,
7467 },
7468 HuffmanCode {
7469 bits: 2,
7470 value: 219,
7471 },
7472 HuffmanCode {
7473 bits: 2,
7474 value: 6,
7475 },
7476 HuffmanCode {
7477 bits: 2,
7478 value: 59,
7479 },
7480 HuffmanCode {
7481 bits: 2,
7482 value: 51,
7483 },
7484 HuffmanCode {
7485 bits: 2,
7486 value: 219,
7487 },
7488 HuffmanCode {
7489 bits: 2,
7490 value: 6,
7491 },
7492 HuffmanCode {
7493 bits: 2,
7494 value: 59,
7495 },
7496 HuffmanCode {
7497 bits: 2,
7498 value: 51,
7499 },
7500 HuffmanCode {
7501 bits: 2,
7502 value: 219,
7503 },
7504 HuffmanCode {
7505 bits: 2,
7506 value: 6,
7507 },
7508 HuffmanCode {
7509 bits: 2,
7510 value: 59,
7511 },
7512 HuffmanCode {
7513 bits: 2,
7514 value: 51,
7515 },
7516 HuffmanCode {
7517 bits: 2,
7518 value: 219,
7519 },
7520 HuffmanCode {
7521 bits: 2,
7522 value: 6,
7523 },
7524 HuffmanCode {
7525 bits: 2,
7526 value: 59,
7527 },
7528 HuffmanCode {
7529 bits: 2,
7530 value: 51,
7531 },
7532 HuffmanCode {
7533 bits: 2,
7534 value: 219,
7535 },
7536 HuffmanCode {
7537 bits: 2,
7538 value: 6,
7539 },
7540 HuffmanCode {
7541 bits: 2,
7542 value: 59,
7543 },
7544 HuffmanCode {
7545 bits: 2,
7546 value: 51,
7547 },
7548 HuffmanCode {
7549 bits: 2,
7550 value: 219,
7551 },
7552 HuffmanCode {
7553 bits: 2,
7554 value: 6,
7555 },
7556 HuffmanCode {
7557 bits: 2,
7558 value: 59,
7559 },
7560 HuffmanCode {
7561 bits: 2,
7562 value: 51,
7563 },
7564 HuffmanCode {
7565 bits: 2,
7566 value: 219,
7567 },
7568 HuffmanCode {
7569 bits: 2,
7570 value: 6,
7571 },
7572 HuffmanCode {
7573 bits: 2,
7574 value: 59,
7575 },
7576 HuffmanCode {
7577 bits: 2,
7578 value: 51,
7579 },
7580 HuffmanCode {
7581 bits: 2,
7582 value: 219,
7583 },
7584 HuffmanCode {
7585 bits: 2,
7586 value: 6,
7587 },
7588 HuffmanCode {
7589 bits: 2,
7590 value: 59,
7591 },
7592 HuffmanCode {
7593 bits: 2,
7594 value: 51,
7595 },
7596 HuffmanCode {
7597 bits: 2,
7598 value: 219,
7599 },
7600 HuffmanCode {
7601 bits: 2,
7602 value: 6,
7603 },
7604 HuffmanCode {
7605 bits: 2,
7606 value: 59,
7607 },
7608 HuffmanCode {
7609 bits: 2,
7610 value: 51,
7611 },
7612 HuffmanCode {
7613 bits: 2,
7614 value: 219,
7615 },
7616 HuffmanCode {
7617 bits: 2,
7618 value: 6,
7619 },
7620 HuffmanCode {
7621 bits: 2,
7622 value: 59,
7623 },
7624 HuffmanCode {
7625 bits: 2,
7626 value: 51,
7627 },
7628 HuffmanCode {
7629 bits: 2,
7630 value: 219,
7631 },
7632 HuffmanCode {
7633 bits: 2,
7634 value: 6,
7635 },
7636 HuffmanCode {
7637 bits: 2,
7638 value: 59,
7639 },
7640 HuffmanCode {
7641 bits: 2,
7642 value: 51,
7643 },
7644 HuffmanCode {
7645 bits: 2,
7646 value: 219,
7647 },
7648 HuffmanCode {
7649 bits: 2,
7650 value: 6,
7651 },
7652 HuffmanCode {
7653 bits: 2,
7654 value: 59,
7655 },
7656 HuffmanCode {
7657 bits: 2,
7658 value: 51,
7659 },
7660 HuffmanCode {
7661 bits: 2,
7662 value: 219,
7663 },
7664 HuffmanCode {
7665 bits: 2,
7666 value: 6,
7667 },
7668 HuffmanCode {
7669 bits: 2,
7670 value: 59,
7671 },
7672 HuffmanCode {
7673 bits: 2,
7674 value: 51,
7675 },
7676 HuffmanCode {
7677 bits: 2,
7678 value: 219,
7679 },
7680 HuffmanCode {
7681 bits: 2,
7682 value: 6,
7683 },
7684 HuffmanCode {
7685 bits: 2,
7686 value: 59,
7687 },
7688 HuffmanCode {
7689 bits: 2,
7690 value: 51,
7691 },
7692 HuffmanCode {
7693 bits: 2,
7694 value: 219,
7695 },
7696 HuffmanCode {
7697 bits: 2,
7698 value: 6,
7699 },
7700 HuffmanCode {
7701 bits: 2,
7702 value: 59,
7703 },
7704 HuffmanCode {
7705 bits: 2,
7706 value: 51,
7707 },
7708 HuffmanCode {
7709 bits: 2,
7710 value: 219,
7711 }];
7712 let mut val: [u16; 4] = [51, 6, 59, 219];
7713 let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 3);
7714 assert_eq!(goal_size, 256);
7715 for index in 0..end_table.len() {
7716 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
7717 [index, end_table[index].bits as usize, end_table[index].value as usize]);
7718 assert!(table[index] == end_table[index]);
7719 }
7720}
7721
7722
7723#[test]
7724fn simple_4() {
7725 let mut table: [HuffmanCode; 256] = [HuffmanCode {
7726 bits: 0,
7727 value: 0,
7728 }; 256];
7729 let end_table: [HuffmanCode; 256] = [HuffmanCode {
7730 bits: 1,
7731 value: 6,
7732 },
7733 HuffmanCode {
7734 bits: 2,
7735 value: 118,
7736 },
7737 HuffmanCode {
7738 bits: 1,
7739 value: 6,
7740 },
7741 HuffmanCode {
7742 bits: 3,
7743 value: 10,
7744 },
7745 HuffmanCode {
7746 bits: 1,
7747 value: 6,
7748 },
7749 HuffmanCode {
7750 bits: 2,
7751 value: 118,
7752 },
7753 HuffmanCode {
7754 bits: 1,
7755 value: 6,
7756 },
7757 HuffmanCode {
7758 bits: 3,
7759 value: 15,
7760 },
7761 HuffmanCode {
7762 bits: 1,
7763 value: 6,
7764 },
7765 HuffmanCode {
7766 bits: 2,
7767 value: 118,
7768 },
7769 HuffmanCode {
7770 bits: 1,
7771 value: 6,
7772 },
7773 HuffmanCode {
7774 bits: 3,
7775 value: 10,
7776 },
7777 HuffmanCode {
7778 bits: 1,
7779 value: 6,
7780 },
7781 HuffmanCode {
7782 bits: 2,
7783 value: 118,
7784 },
7785 HuffmanCode {
7786 bits: 1,
7787 value: 6,
7788 },
7789 HuffmanCode {
7790 bits: 3,
7791 value: 15,
7792 },
7793 HuffmanCode {
7794 bits: 1,
7795 value: 6,
7796 },
7797 HuffmanCode {
7798 bits: 2,
7799 value: 118,
7800 },
7801 HuffmanCode {
7802 bits: 1,
7803 value: 6,
7804 },
7805 HuffmanCode {
7806 bits: 3,
7807 value: 10,
7808 },
7809 HuffmanCode {
7810 bits: 1,
7811 value: 6,
7812 },
7813 HuffmanCode {
7814 bits: 2,
7815 value: 118,
7816 },
7817 HuffmanCode {
7818 bits: 1,
7819 value: 6,
7820 },
7821 HuffmanCode {
7822 bits: 3,
7823 value: 15,
7824 },
7825 HuffmanCode {
7826 bits: 1,
7827 value: 6,
7828 },
7829 HuffmanCode {
7830 bits: 2,
7831 value: 118,
7832 },
7833 HuffmanCode {
7834 bits: 1,
7835 value: 6,
7836 },
7837 HuffmanCode {
7838 bits: 3,
7839 value: 10,
7840 },
7841 HuffmanCode {
7842 bits: 1,
7843 value: 6,
7844 },
7845 HuffmanCode {
7846 bits: 2,
7847 value: 118,
7848 },
7849 HuffmanCode {
7850 bits: 1,
7851 value: 6,
7852 },
7853 HuffmanCode {
7854 bits: 3,
7855 value: 15,
7856 },
7857 HuffmanCode {
7858 bits: 1,
7859 value: 6,
7860 },
7861 HuffmanCode {
7862 bits: 2,
7863 value: 118,
7864 },
7865 HuffmanCode {
7866 bits: 1,
7867 value: 6,
7868 },
7869 HuffmanCode {
7870 bits: 3,
7871 value: 10,
7872 },
7873 HuffmanCode {
7874 bits: 1,
7875 value: 6,
7876 },
7877 HuffmanCode {
7878 bits: 2,
7879 value: 118,
7880 },
7881 HuffmanCode {
7882 bits: 1,
7883 value: 6,
7884 },
7885 HuffmanCode {
7886 bits: 3,
7887 value: 15,
7888 },
7889 HuffmanCode {
7890 bits: 1,
7891 value: 6,
7892 },
7893 HuffmanCode {
7894 bits: 2,
7895 value: 118,
7896 },
7897 HuffmanCode {
7898 bits: 1,
7899 value: 6,
7900 },
7901 HuffmanCode {
7902 bits: 3,
7903 value: 10,
7904 },
7905 HuffmanCode {
7906 bits: 1,
7907 value: 6,
7908 },
7909 HuffmanCode {
7910 bits: 2,
7911 value: 118,
7912 },
7913 HuffmanCode {
7914 bits: 1,
7915 value: 6,
7916 },
7917 HuffmanCode {
7918 bits: 3,
7919 value: 15,
7920 },
7921 HuffmanCode {
7922 bits: 1,
7923 value: 6,
7924 },
7925 HuffmanCode {
7926 bits: 2,
7927 value: 118,
7928 },
7929 HuffmanCode {
7930 bits: 1,
7931 value: 6,
7932 },
7933 HuffmanCode {
7934 bits: 3,
7935 value: 10,
7936 },
7937 HuffmanCode {
7938 bits: 1,
7939 value: 6,
7940 },
7941 HuffmanCode {
7942 bits: 2,
7943 value: 118,
7944 },
7945 HuffmanCode {
7946 bits: 1,
7947 value: 6,
7948 },
7949 HuffmanCode {
7950 bits: 3,
7951 value: 15,
7952 },
7953 HuffmanCode {
7954 bits: 1,
7955 value: 6,
7956 },
7957 HuffmanCode {
7958 bits: 2,
7959 value: 118,
7960 },
7961 HuffmanCode {
7962 bits: 1,
7963 value: 6,
7964 },
7965 HuffmanCode {
7966 bits: 3,
7967 value: 10,
7968 },
7969 HuffmanCode {
7970 bits: 1,
7971 value: 6,
7972 },
7973 HuffmanCode {
7974 bits: 2,
7975 value: 118,
7976 },
7977 HuffmanCode {
7978 bits: 1,
7979 value: 6,
7980 },
7981 HuffmanCode {
7982 bits: 3,
7983 value: 15,
7984 },
7985 HuffmanCode {
7986 bits: 1,
7987 value: 6,
7988 },
7989 HuffmanCode {
7990 bits: 2,
7991 value: 118,
7992 },
7993 HuffmanCode {
7994 bits: 1,
7995 value: 6,
7996 },
7997 HuffmanCode {
7998 bits: 3,
7999 value: 10,
8000 },
8001 HuffmanCode {
8002 bits: 1,
8003 value: 6,
8004 },
8005 HuffmanCode {
8006 bits: 2,
8007 value: 118,
8008 },
8009 HuffmanCode {
8010 bits: 1,
8011 value: 6,
8012 },
8013 HuffmanCode {
8014 bits: 3,
8015 value: 15,
8016 },
8017 HuffmanCode {
8018 bits: 1,
8019 value: 6,
8020 },
8021 HuffmanCode {
8022 bits: 2,
8023 value: 118,
8024 },
8025 HuffmanCode {
8026 bits: 1,
8027 value: 6,
8028 },
8029 HuffmanCode {
8030 bits: 3,
8031 value: 10,
8032 },
8033 HuffmanCode {
8034 bits: 1,
8035 value: 6,
8036 },
8037 HuffmanCode {
8038 bits: 2,
8039 value: 118,
8040 },
8041 HuffmanCode {
8042 bits: 1,
8043 value: 6,
8044 },
8045 HuffmanCode {
8046 bits: 3,
8047 value: 15,
8048 },
8049 HuffmanCode {
8050 bits: 1,
8051 value: 6,
8052 },
8053 HuffmanCode {
8054 bits: 2,
8055 value: 118,
8056 },
8057 HuffmanCode {
8058 bits: 1,
8059 value: 6,
8060 },
8061 HuffmanCode {
8062 bits: 3,
8063 value: 10,
8064 },
8065 HuffmanCode {
8066 bits: 1,
8067 value: 6,
8068 },
8069 HuffmanCode {
8070 bits: 2,
8071 value: 118,
8072 },
8073 HuffmanCode {
8074 bits: 1,
8075 value: 6,
8076 },
8077 HuffmanCode {
8078 bits: 3,
8079 value: 15,
8080 },
8081 HuffmanCode {
8082 bits: 1,
8083 value: 6,
8084 },
8085 HuffmanCode {
8086 bits: 2,
8087 value: 118,
8088 },
8089 HuffmanCode {
8090 bits: 1,
8091 value: 6,
8092 },
8093 HuffmanCode {
8094 bits: 3,
8095 value: 10,
8096 },
8097 HuffmanCode {
8098 bits: 1,
8099 value: 6,
8100 },
8101 HuffmanCode {
8102 bits: 2,
8103 value: 118,
8104 },
8105 HuffmanCode {
8106 bits: 1,
8107 value: 6,
8108 },
8109 HuffmanCode {
8110 bits: 3,
8111 value: 15,
8112 },
8113 HuffmanCode {
8114 bits: 1,
8115 value: 6,
8116 },
8117 HuffmanCode {
8118 bits: 2,
8119 value: 118,
8120 },
8121 HuffmanCode {
8122 bits: 1,
8123 value: 6,
8124 },
8125 HuffmanCode {
8126 bits: 3,
8127 value: 10,
8128 },
8129 HuffmanCode {
8130 bits: 1,
8131 value: 6,
8132 },
8133 HuffmanCode {
8134 bits: 2,
8135 value: 118,
8136 },
8137 HuffmanCode {
8138 bits: 1,
8139 value: 6,
8140 },
8141 HuffmanCode {
8142 bits: 3,
8143 value: 15,
8144 },
8145 HuffmanCode {
8146 bits: 1,
8147 value: 6,
8148 },
8149 HuffmanCode {
8150 bits: 2,
8151 value: 118,
8152 },
8153 HuffmanCode {
8154 bits: 1,
8155 value: 6,
8156 },
8157 HuffmanCode {
8158 bits: 3,
8159 value: 10,
8160 },
8161 HuffmanCode {
8162 bits: 1,
8163 value: 6,
8164 },
8165 HuffmanCode {
8166 bits: 2,
8167 value: 118,
8168 },
8169 HuffmanCode {
8170 bits: 1,
8171 value: 6,
8172 },
8173 HuffmanCode {
8174 bits: 3,
8175 value: 15,
8176 },
8177 HuffmanCode {
8178 bits: 1,
8179 value: 6,
8180 },
8181 HuffmanCode {
8182 bits: 2,
8183 value: 118,
8184 },
8185 HuffmanCode {
8186 bits: 1,
8187 value: 6,
8188 },
8189 HuffmanCode {
8190 bits: 3,
8191 value: 10,
8192 },
8193 HuffmanCode {
8194 bits: 1,
8195 value: 6,
8196 },
8197 HuffmanCode {
8198 bits: 2,
8199 value: 118,
8200 },
8201 HuffmanCode {
8202 bits: 1,
8203 value: 6,
8204 },
8205 HuffmanCode {
8206 bits: 3,
8207 value: 15,
8208 },
8209 HuffmanCode {
8210 bits: 1,
8211 value: 6,
8212 },
8213 HuffmanCode {
8214 bits: 2,
8215 value: 118,
8216 },
8217 HuffmanCode {
8218 bits: 1,
8219 value: 6,
8220 },
8221 HuffmanCode {
8222 bits: 3,
8223 value: 10,
8224 },
8225 HuffmanCode {
8226 bits: 1,
8227 value: 6,
8228 },
8229 HuffmanCode {
8230 bits: 2,
8231 value: 118,
8232 },
8233 HuffmanCode {
8234 bits: 1,
8235 value: 6,
8236 },
8237 HuffmanCode {
8238 bits: 3,
8239 value: 15,
8240 },
8241 HuffmanCode {
8242 bits: 1,
8243 value: 6,
8244 },
8245 HuffmanCode {
8246 bits: 2,
8247 value: 118,
8248 },
8249 HuffmanCode {
8250 bits: 1,
8251 value: 6,
8252 },
8253 HuffmanCode {
8254 bits: 3,
8255 value: 10,
8256 },
8257 HuffmanCode {
8258 bits: 1,
8259 value: 6,
8260 },
8261 HuffmanCode {
8262 bits: 2,
8263 value: 118,
8264 },
8265 HuffmanCode {
8266 bits: 1,
8267 value: 6,
8268 },
8269 HuffmanCode {
8270 bits: 3,
8271 value: 15,
8272 },
8273 HuffmanCode {
8274 bits: 1,
8275 value: 6,
8276 },
8277 HuffmanCode {
8278 bits: 2,
8279 value: 118,
8280 },
8281 HuffmanCode {
8282 bits: 1,
8283 value: 6,
8284 },
8285 HuffmanCode {
8286 bits: 3,
8287 value: 10,
8288 },
8289 HuffmanCode {
8290 bits: 1,
8291 value: 6,
8292 },
8293 HuffmanCode {
8294 bits: 2,
8295 value: 118,
8296 },
8297 HuffmanCode {
8298 bits: 1,
8299 value: 6,
8300 },
8301 HuffmanCode {
8302 bits: 3,
8303 value: 15,
8304 },
8305 HuffmanCode {
8306 bits: 1,
8307 value: 6,
8308 },
8309 HuffmanCode {
8310 bits: 2,
8311 value: 118,
8312 },
8313 HuffmanCode {
8314 bits: 1,
8315 value: 6,
8316 },
8317 HuffmanCode {
8318 bits: 3,
8319 value: 10,
8320 },
8321 HuffmanCode {
8322 bits: 1,
8323 value: 6,
8324 },
8325 HuffmanCode {
8326 bits: 2,
8327 value: 118,
8328 },
8329 HuffmanCode {
8330 bits: 1,
8331 value: 6,
8332 },
8333 HuffmanCode {
8334 bits: 3,
8335 value: 15,
8336 },
8337 HuffmanCode {
8338 bits: 1,
8339 value: 6,
8340 },
8341 HuffmanCode {
8342 bits: 2,
8343 value: 118,
8344 },
8345 HuffmanCode {
8346 bits: 1,
8347 value: 6,
8348 },
8349 HuffmanCode {
8350 bits: 3,
8351 value: 10,
8352 },
8353 HuffmanCode {
8354 bits: 1,
8355 value: 6,
8356 },
8357 HuffmanCode {
8358 bits: 2,
8359 value: 118,
8360 },
8361 HuffmanCode {
8362 bits: 1,
8363 value: 6,
8364 },
8365 HuffmanCode {
8366 bits: 3,
8367 value: 15,
8368 },
8369 HuffmanCode {
8370 bits: 1,
8371 value: 6,
8372 },
8373 HuffmanCode {
8374 bits: 2,
8375 value: 118,
8376 },
8377 HuffmanCode {
8378 bits: 1,
8379 value: 6,
8380 },
8381 HuffmanCode {
8382 bits: 3,
8383 value: 10,
8384 },
8385 HuffmanCode {
8386 bits: 1,
8387 value: 6,
8388 },
8389 HuffmanCode {
8390 bits: 2,
8391 value: 118,
8392 },
8393 HuffmanCode {
8394 bits: 1,
8395 value: 6,
8396 },
8397 HuffmanCode {
8398 bits: 3,
8399 value: 15,
8400 },
8401 HuffmanCode {
8402 bits: 1,
8403 value: 6,
8404 },
8405 HuffmanCode {
8406 bits: 2,
8407 value: 118,
8408 },
8409 HuffmanCode {
8410 bits: 1,
8411 value: 6,
8412 },
8413 HuffmanCode {
8414 bits: 3,
8415 value: 10,
8416 },
8417 HuffmanCode {
8418 bits: 1,
8419 value: 6,
8420 },
8421 HuffmanCode {
8422 bits: 2,
8423 value: 118,
8424 },
8425 HuffmanCode {
8426 bits: 1,
8427 value: 6,
8428 },
8429 HuffmanCode {
8430 bits: 3,
8431 value: 15,
8432 },
8433 HuffmanCode {
8434 bits: 1,
8435 value: 6,
8436 },
8437 HuffmanCode {
8438 bits: 2,
8439 value: 118,
8440 },
8441 HuffmanCode {
8442 bits: 1,
8443 value: 6,
8444 },
8445 HuffmanCode {
8446 bits: 3,
8447 value: 10,
8448 },
8449 HuffmanCode {
8450 bits: 1,
8451 value: 6,
8452 },
8453 HuffmanCode {
8454 bits: 2,
8455 value: 118,
8456 },
8457 HuffmanCode {
8458 bits: 1,
8459 value: 6,
8460 },
8461 HuffmanCode {
8462 bits: 3,
8463 value: 15,
8464 },
8465 HuffmanCode {
8466 bits: 1,
8467 value: 6,
8468 },
8469 HuffmanCode {
8470 bits: 2,
8471 value: 118,
8472 },
8473 HuffmanCode {
8474 bits: 1,
8475 value: 6,
8476 },
8477 HuffmanCode {
8478 bits: 3,
8479 value: 10,
8480 },
8481 HuffmanCode {
8482 bits: 1,
8483 value: 6,
8484 },
8485 HuffmanCode {
8486 bits: 2,
8487 value: 118,
8488 },
8489 HuffmanCode {
8490 bits: 1,
8491 value: 6,
8492 },
8493 HuffmanCode {
8494 bits: 3,
8495 value: 15,
8496 },
8497 HuffmanCode {
8498 bits: 1,
8499 value: 6,
8500 },
8501 HuffmanCode {
8502 bits: 2,
8503 value: 118,
8504 },
8505 HuffmanCode {
8506 bits: 1,
8507 value: 6,
8508 },
8509 HuffmanCode {
8510 bits: 3,
8511 value: 10,
8512 },
8513 HuffmanCode {
8514 bits: 1,
8515 value: 6,
8516 },
8517 HuffmanCode {
8518 bits: 2,
8519 value: 118,
8520 },
8521 HuffmanCode {
8522 bits: 1,
8523 value: 6,
8524 },
8525 HuffmanCode {
8526 bits: 3,
8527 value: 15,
8528 },
8529 HuffmanCode {
8530 bits: 1,
8531 value: 6,
8532 },
8533 HuffmanCode {
8534 bits: 2,
8535 value: 118,
8536 },
8537 HuffmanCode {
8538 bits: 1,
8539 value: 6,
8540 },
8541 HuffmanCode {
8542 bits: 3,
8543 value: 10,
8544 },
8545 HuffmanCode {
8546 bits: 1,
8547 value: 6,
8548 },
8549 HuffmanCode {
8550 bits: 2,
8551 value: 118,
8552 },
8553 HuffmanCode {
8554 bits: 1,
8555 value: 6,
8556 },
8557 HuffmanCode {
8558 bits: 3,
8559 value: 15,
8560 },
8561 HuffmanCode {
8562 bits: 1,
8563 value: 6,
8564 },
8565 HuffmanCode {
8566 bits: 2,
8567 value: 118,
8568 },
8569 HuffmanCode {
8570 bits: 1,
8571 value: 6,
8572 },
8573 HuffmanCode {
8574 bits: 3,
8575 value: 10,
8576 },
8577 HuffmanCode {
8578 bits: 1,
8579 value: 6,
8580 },
8581 HuffmanCode {
8582 bits: 2,
8583 value: 118,
8584 },
8585 HuffmanCode {
8586 bits: 1,
8587 value: 6,
8588 },
8589 HuffmanCode {
8590 bits: 3,
8591 value: 15,
8592 },
8593 HuffmanCode {
8594 bits: 1,
8595 value: 6,
8596 },
8597 HuffmanCode {
8598 bits: 2,
8599 value: 118,
8600 },
8601 HuffmanCode {
8602 bits: 1,
8603 value: 6,
8604 },
8605 HuffmanCode {
8606 bits: 3,
8607 value: 10,
8608 },
8609 HuffmanCode {
8610 bits: 1,
8611 value: 6,
8612 },
8613 HuffmanCode {
8614 bits: 2,
8615 value: 118,
8616 },
8617 HuffmanCode {
8618 bits: 1,
8619 value: 6,
8620 },
8621 HuffmanCode {
8622 bits: 3,
8623 value: 15,
8624 },
8625 HuffmanCode {
8626 bits: 1,
8627 value: 6,
8628 },
8629 HuffmanCode {
8630 bits: 2,
8631 value: 118,
8632 },
8633 HuffmanCode {
8634 bits: 1,
8635 value: 6,
8636 },
8637 HuffmanCode {
8638 bits: 3,
8639 value: 10,
8640 },
8641 HuffmanCode {
8642 bits: 1,
8643 value: 6,
8644 },
8645 HuffmanCode {
8646 bits: 2,
8647 value: 118,
8648 },
8649 HuffmanCode {
8650 bits: 1,
8651 value: 6,
8652 },
8653 HuffmanCode {
8654 bits: 3,
8655 value: 15,
8656 },
8657 HuffmanCode {
8658 bits: 1,
8659 value: 6,
8660 },
8661 HuffmanCode {
8662 bits: 2,
8663 value: 118,
8664 },
8665 HuffmanCode {
8666 bits: 1,
8667 value: 6,
8668 },
8669 HuffmanCode {
8670 bits: 3,
8671 value: 10,
8672 },
8673 HuffmanCode {
8674 bits: 1,
8675 value: 6,
8676 },
8677 HuffmanCode {
8678 bits: 2,
8679 value: 118,
8680 },
8681 HuffmanCode {
8682 bits: 1,
8683 value: 6,
8684 },
8685 HuffmanCode {
8686 bits: 3,
8687 value: 15,
8688 },
8689 HuffmanCode {
8690 bits: 1,
8691 value: 6,
8692 },
8693 HuffmanCode {
8694 bits: 2,
8695 value: 118,
8696 },
8697 HuffmanCode {
8698 bits: 1,
8699 value: 6,
8700 },
8701 HuffmanCode {
8702 bits: 3,
8703 value: 10,
8704 },
8705 HuffmanCode {
8706 bits: 1,
8707 value: 6,
8708 },
8709 HuffmanCode {
8710 bits: 2,
8711 value: 118,
8712 },
8713 HuffmanCode {
8714 bits: 1,
8715 value: 6,
8716 },
8717 HuffmanCode {
8718 bits: 3,
8719 value: 15,
8720 },
8721 HuffmanCode {
8722 bits: 1,
8723 value: 6,
8724 },
8725 HuffmanCode {
8726 bits: 2,
8727 value: 118,
8728 },
8729 HuffmanCode {
8730 bits: 1,
8731 value: 6,
8732 },
8733 HuffmanCode {
8734 bits: 3,
8735 value: 10,
8736 },
8737 HuffmanCode {
8738 bits: 1,
8739 value: 6,
8740 },
8741 HuffmanCode {
8742 bits: 2,
8743 value: 118,
8744 },
8745 HuffmanCode {
8746 bits: 1,
8747 value: 6,
8748 },
8749 HuffmanCode {
8750 bits: 3,
8751 value: 15,
8752 }];
8753 let mut val: [u16; 5] = [6, 118, 15, 10, 65535];
8754 let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 4);
8755 assert_eq!(goal_size, 256);
8756 for index in 0..end_table.len() {
8757 assert_eq!([index, table[index].bits as usize, table[index].value as usize],
8758 [index, end_table[index].bits as usize, end_table[index].value as usize]);
8759 assert!(table[index] == end_table[index]);
8760 }
8761}