#[cfg(test)]
use super::*;
#[test]
fn code_length_ht() {
let code_lengths: [u8; 19] = [0, 2, 3, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let count: [u16; 6] = [0, 0, 3, 2, 0, 0];
let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
[HuffmanCode {
value: 0,
bits: 0,
}; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] = [HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 5,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 5,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 5,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 2,
value: 1,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 3,
value: 5,
}];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn code_length_stringy_ht() {
let code_lengths: [u8; 19] = [1, 0, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let count: [u16; 6] = [0, 1, 1, 2, 0, 0];
let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
[HuffmanCode {
value: 0,
bits: 0,
}; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] = [HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 3,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 3,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 3,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 2,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 2,
value: 4,
},
HuffmanCode {
bits: 1,
value: 0,
},
HuffmanCode {
bits: 3,
value: 3,
}];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn code_length_single_value_ht() {
let code_lengths: [u8; 19] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0];
let count: [u16; 6] = [0, 1, 0, 0, 0, 0];
let mut table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
[HuffmanCode {
value: 0,
bits: 0,
}; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
BrotliBuildCodeLengthsHuffmanTable(&mut table, &code_lengths, &count);
let end_table: [HuffmanCode; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH] =
[HuffmanCode {
bits: 0,
value: 9,
}; 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn complex() {
let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
[65535, 65535, 65535, 72, 15, 0, 65, 5, 6, 66, 19, 65535, 65535, 65535, 65535, 65535, 1, 2, 3,
4, 57, 16, 7, 8, 9, 10, 11, 12, 13, 14, 17, 73, 69, 18, 64, 20, 21, 22, 23, 24, 25, 26, 27,
28, 37, 31, 47, 34, 36, 103, 37, 36, 44, 38, 39, 40, 41, 49, 43, 46, 48, 50, 51, 50, 49, 138,
55, 58, 68, 61, 56, 57, 62, 77, 88, 66, 76, 71, 63, 64, 67, 68, 127, 71, 117, 114, 73, 74,
77, 76, 102, 86, 116, 255, 79, 80, 84, 82, 83, 87, 92, 93, 94, 95, 89, 90, 91, 96, 109, 117,
102, 110, 97, 98, 99, 100, 122, 149, 115, 104, 105, 106, 107, 108, 167, 116, 111, 112, 113,
114, 128, 118, 232, 254, 119, 120, 121, 127, 123, 142, 132, 133, 129, 129, 136, 130, 131,
132, 133, 134, 135, 137, 224, 233, 139, 140, 141, 142, 143, 144, 162, 146, 147, 148, 169,
157, 151, 152, 153, 154, 155, 156, 158, 181, 159, 160, 161, 162, 184, 164, 174, 180, 167,
182, 212, 170, 171, 172, 190, 201, 175, 176, 177, 178, 179, 180, 188, 194, 183, 184, 185,
186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
236, 207, 221, 216, 208, 209, 210, 211, 214, 213, 220, 215, 218, 217, 219, 222, 223, 234,
227, 229, 224, 235, 226, 231, 228, 244, 230, 233, 232, 255, 253, 237, 251, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 252, 253, 254, 255, 0, 23040,
3500, 1, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 38400, 3500, 1, 0, 61712,
21033, 32767, 0, 60189, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
51712, 3501, 1, 0, 15360, 0, 0, 0, 1536, 3502, 1, 0, 8192, 3500, 1, 0, 61792, 21033, 32767,
0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 38400, 3500, 1, 0, 0, 0, 0,
0, 256, 0, 0, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 61792, 21033, 32767, 0, 18208, 35059, 32767,
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,
32768, 54143, 32705, 0, 0, 54016, 32705, 0, 0, 54016, 32705, 0, 3584, 0, 0, 0, 6, 0, 0,
65408, 7, 3502, 32767, 0, 8192, 3500, 1, 0, 0, 54016, 32705, 0, 1, 0, 0, 0, 8192, 3500, 1, 0,
12288, 54016, 32705, 0, 8192, 54016, 32705, 0, 61888, 21033, 32767, 0, 14237, 35059, 32767,
0, 88, 53952, 32705, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 54016, 32705, 0, 8192, 3500, 1, 0,
8192, 3500, 1, 0, 62016, 21033, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 8192, 3500,
1, 0, 61936, 21033, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0,
0, 0, 0, 44144, 37434, 32767, 0, 19984, 53952, 32705, 0, 0, 0, 0, 0, 62076, 21033, 32767, 0,
62080, 21033, 32767, 0, 62084, 21033, 32767, 0, 64, 53952, 32705, 0, 65535, 65535, 65535,
65535, 64, 0, 8296, 1, 62032, 21033, 32767, 0, 16900, 27601, 32767, 0, 18096, 27604, 32767,
0, 0, 0, 0, 0, 62080, 21033, 32767, 0, 17447, 27601, 32767, 0, 62080, 21033, 32767, 0, 17246,
27601, 32767, 0, 0, 0, 0, 0, 62784, 36821, 32767, 0, 62144, 21033, 32767, 0, 4085, 27601,
32767, 0, 44624, 27603, 32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 46488,
27603, 32767, 0, 18096, 27604, 32767, 0, 0, 0, 0, 0, 62256, 21033, 32767, 0, 23819, 27601,
32767, 0, 62288, 21033, 32767, 0, 20326, 27600, 32767, 0, 15584, 36820, 32767, 0, 15096,
36820, 32767, 0, 12288, 36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 18096,
27604, 32767, 0, 62400, 21033, 32767, 0, 1299, 0, 0, 0, 51315, 34237, 23510, 56320, 18096,
27604, 32767, 0, 62400, 21033, 32767, 0, 11120, 27601, 32767, 0, 13272, 27604, 32767, 0, 28,
0, 0, 0, 62384, 21033, 32767, 0, 10134, 27601, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
let mut counts: [u16; 11] = [0, 0, 0, 1, 6, 7, 4, 9, 17, 12, 60];
let end_counts: [u16; 11] = [0, 0, 0, 1, 6, 7, 4, 9, 17, 0, 0];
let mut table: [HuffmanCode; 328] = [HuffmanCode {
bits: 0,
value: 0,
}; 328];
let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
assert_eq!(size, 328);
assert_eq!(counts, end_counts);
let end_table: [HuffmanCode; 328] = [HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 117,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 12,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 128,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 9,
value: 251,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 5,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 74,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 251,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 265,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 254,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 18,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 224,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 233,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 69,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 9,
value: 203,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 8,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 68,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 249,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 117,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 14,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 136,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 193,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 16,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 115,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 6,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 209,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 254,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 67,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 235,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 177,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 114,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 9,
value: 143,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 10,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 68,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 193,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 117,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 13,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 128,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 125,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 5,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 102,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 251,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 141,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 254,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 64,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 224,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 109,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 69,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 9,
value: 77,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 9,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 68,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 125,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 117,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 17,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 136,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 69,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 16,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 9,
value: 41,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 7,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 85,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 0,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 6,
value: 254,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 4,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 8,
value: 71,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 2,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 7,
value: 235,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 5,
value: 77,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 53,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 4,
value: 76,
},
HuffmanCode {
bits: 7,
value: 114,
},
HuffmanCode {
bits: 4,
value: 15,
},
HuffmanCode {
bits: 5,
value: 57,
},
HuffmanCode {
bits: 4,
value: 232,
},
HuffmanCode {
bits: 9,
value: 17,
},
HuffmanCode {
bits: 3,
value: 72,
},
HuffmanCode {
bits: 5,
value: 3,
},
HuffmanCode {
bits: 4,
value: 116,
},
HuffmanCode {
bits: 8,
value: 11,
},
HuffmanCode {
bits: 4,
value: 73,
},
HuffmanCode {
bits: 6,
value: 68,
},
HuffmanCode {
bits: 4,
value: 255,
},
HuffmanCode {
bits: 10,
value: 69,
},
HuffmanCode {
bits: 1,
value: 66,
},
HuffmanCode {
bits: 1,
value: 127,
},
HuffmanCode {
bits: 1,
value: 129,
},
HuffmanCode {
bits: 1,
value: 130,
},
HuffmanCode {
bits: 1,
value: 131,
},
HuffmanCode {
bits: 1,
value: 132,
},
HuffmanCode {
bits: 1,
value: 133,
},
HuffmanCode {
bits: 1,
value: 134,
},
HuffmanCode {
bits: 1,
value: 135,
},
HuffmanCode {
bits: 1,
value: 137,
},
HuffmanCode {
bits: 1,
value: 233,
},
HuffmanCode {
bits: 1,
value: 253,
},
HuffmanCode {
bits: 2,
value: 19,
},
HuffmanCode {
bits: 2,
value: 21,
},
HuffmanCode {
bits: 2,
value: 20,
},
HuffmanCode {
bits: 2,
value: 22,
},
HuffmanCode {
bits: 2,
value: 23,
},
HuffmanCode {
bits: 2,
value: 25,
},
HuffmanCode {
bits: 2,
value: 24,
},
HuffmanCode {
bits: 2,
value: 26,
},
HuffmanCode {
bits: 2,
value: 27,
},
HuffmanCode {
bits: 2,
value: 37,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 2,
value: 38,
},
HuffmanCode {
bits: 2,
value: 39,
},
HuffmanCode {
bits: 2,
value: 41,
},
HuffmanCode {
bits: 2,
value: 40,
},
HuffmanCode {
bits: 2,
value: 49,
},
HuffmanCode {
bits: 2,
value: 138,
},
HuffmanCode {
bits: 2,
value: 140,
},
HuffmanCode {
bits: 2,
value: 139,
},
HuffmanCode {
bits: 2,
value: 141,
},
HuffmanCode {
bits: 2,
value: 142,
},
HuffmanCode {
bits: 2,
value: 144,
},
HuffmanCode {
bits: 2,
value: 143,
},
HuffmanCode {
bits: 2,
value: 162,
},
HuffmanCode {
bits: 2,
value: 184,
},
HuffmanCode {
bits: 2,
value: 186,
},
HuffmanCode {
bits: 2,
value: 185,
},
HuffmanCode {
bits: 2,
value: 187,
},
HuffmanCode {
bits: 2,
value: 188,
},
HuffmanCode {
bits: 2,
value: 190,
},
HuffmanCode {
bits: 2,
value: 189,
},
HuffmanCode {
bits: 2,
value: 191,
},
HuffmanCode {
bits: 2,
value: 192,
},
HuffmanCode {
bits: 2,
value: 194,
},
HuffmanCode {
bits: 2,
value: 193,
},
HuffmanCode {
bits: 2,
value: 195,
},
HuffmanCode {
bits: 2,
value: 196,
},
HuffmanCode {
bits: 2,
value: 198,
},
HuffmanCode {
bits: 2,
value: 197,
},
HuffmanCode {
bits: 2,
value: 199,
},
HuffmanCode {
bits: 2,
value: 200,
},
HuffmanCode {
bits: 2,
value: 202,
},
HuffmanCode {
bits: 2,
value: 201,
},
HuffmanCode {
bits: 2,
value: 203,
},
HuffmanCode {
bits: 2,
value: 236,
},
HuffmanCode {
bits: 2,
value: 238,
},
HuffmanCode {
bits: 2,
value: 237,
},
HuffmanCode {
bits: 2,
value: 239,
},
HuffmanCode {
bits: 2,
value: 240,
},
HuffmanCode {
bits: 2,
value: 242,
},
HuffmanCode {
bits: 2,
value: 241,
},
HuffmanCode {
bits: 2,
value: 243,
},
HuffmanCode {
bits: 2,
value: 244,
},
HuffmanCode {
bits: 2,
value: 246,
},
HuffmanCode {
bits: 2,
value: 245,
},
HuffmanCode {
bits: 2,
value: 247,
},
HuffmanCode {
bits: 2,
value: 248,
},
HuffmanCode {
bits: 2,
value: 250,
},
HuffmanCode {
bits: 2,
value: 249,
},
HuffmanCode {
bits: 2,
value: 252,
}];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn multilevel() {
let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
[65535, 65535, 65535, 65535, 0, 1, 3, 2, 6, 14, 17, 21, 65535, 65535, 65535, 65535, 72, 48, 4,
8, 5, 73, 7, 9, 16, 10, 11, 12, 13, 20, 15, 47, 24, 22, 19, 21, 77, 41, 25, 24, 32, 26, 27,
28, 29, 30, 31, 33, 40, 34, 35, 36, 37, 38, 39, 49, 56, 42, 43, 44, 45, 46, 57, 65, 64, 50,
51, 52, 53, 54, 55, 71, 76, 58, 59, 60, 61, 62, 63, 97, 80, 66, 67, 68, 69, 78, 82, 75, 73,
137, 75, 81, 96, 102, 138, 80, 88, 82, 83, 84, 85, 86, 87, 89, 112, 90, 91, 92, 93, 94, 95,
117, 104, 98, 99, 100, 101, 105, 116, 109, 120, 106, 107, 108, 109, 110, 111, 118, 114, 122,
115, 116, 170, 129, 121, 120, 128, 122, 123, 124, 125, 126, 127, 145, 136, 130, 131, 132,
133, 134, 135, 140, 144, 139, 191, 216, 141, 142, 143, 169, 152, 146, 147, 148, 149, 150,
151, 153, 160, 154, 155, 156, 157, 158, 159, 161, 168, 162, 163, 164, 165, 166, 167, 171,
176, 193, 225, 177, 0, 0, 0, 0, 184, 178, 179, 180, 181, 182, 183, 185, 192, 186, 187, 188,
189, 190, 209, 251, 200, 194, 195, 196, 197, 198, 199, 201, 208, 202, 203, 204, 205, 206,
207, 217, 232, 210, 211, 212, 213, 214, 215, 226, 224, 218, 219, 220, 221, 222, 223, 241,
248, 233, 227, 228, 229, 230, 231, 234, 240, 247, 235, 236, 237, 238, 239, 0, 255, 242, 243,
244, 245, 246, 250, 0, 252, 0, 0, 0, 253, 254, 0, 0, 27136, 22, 1, 0, 0, 0, 0, 0, 12288, 22,
1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 42496, 22, 1, 0, 57680, 24511, 32767, 0, 60189, 35058, 32767,
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,
24, 1, 0, 12288, 22, 1, 0, 57760, 24511, 32767, 0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0,
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,
57760, 24511, 32767, 0, 18208, 35059, 32767, 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, 32768, 255, 1, 0, 0, 128, 1, 0, 0, 128, 1, 0,
3584, 0, 0, 0, 6, 0, 0, 65408, 7, 24, 32767, 0, 12288, 22, 1, 0, 0, 128, 1, 0, 1, 0, 0, 0,
12288, 22, 1, 0, 12288, 128, 1, 0, 8192, 128, 1, 0, 57856, 24511, 32767, 0, 14237, 35059,
32767, 0, 88, 32, 1, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 128, 1, 0, 12288, 22, 1, 0, 12288,
22, 1, 0, 57984, 24511, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 12288, 22, 1, 0,
57904, 24511, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0, 0, 0,
0, 44144, 37434, 32767, 0, 19984, 32, 1, 0, 0, 0, 0, 0, 58044, 24511, 32767, 0, 58048, 24511,
32767, 0, 58052, 24511, 32767, 0, 64, 32, 1, 0, 65535, 65535, 65535, 65535, 64, 0, 8296, 1,
58000, 24511, 32767, 0, 4612, 24513, 32767, 0, 5784, 24516, 32767, 0, 0, 0, 0, 0, 58048,
24511, 32767, 0, 5159, 24513, 32767, 0, 58048, 24511, 32767, 0, 4958, 24513, 32767, 0, 0, 0,
0, 0, 62784, 36821, 32767, 0, 58112, 24511, 32767, 0, 57333, 24512, 32767, 0, 32336, 24515,
32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 34200, 24515, 32767, 0, 5784,
24516, 32767, 0, 0, 0, 0, 0, 58224, 24511, 32767, 0, 11531, 24513, 32767, 0, 58256, 24511,
32767, 0, 8038, 24512, 32767, 0, 15584, 36820, 32767, 0, 15096, 36820, 32767, 0, 12288,
36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 5784, 24516, 32767, 0, 58368,
24511, 32767, 0, 779, 0, 0, 0, 48416, 65151, 25138, 5632, 5784, 24516, 32767, 0, 58368,
24511, 32767, 0, 64368, 24512, 32767, 0, 960, 24516, 32767, 0, 28, 0, 0, 0, 58352, 24511,
32767, 0, 63382, 24512, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
let mut counts: [u16; 12] = [0, 0, 0, 0, 2, 6, 25, 12, 15, 12, 80, 88];
let end_counts: [u16; 12] = [0, 0, 0, 0, 2, 6, 25, 12, 15, 0, 0, 0];
let mut table: [HuffmanCode; 436] = [HuffmanCode {
bits: 0,
value: 0,
}; 436];
let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
assert_eq!(size, 436);
assert_eq!(counts, end_counts);
let end_table: [HuffmanCode; 436] = [HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 136,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 216,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 200,
},
HuffmanCode {
bits: 6,
value: 32,
},
HuffmanCode {
bits: 9,
value: 259,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 168,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 8,
value: 11,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 6,
value: 255,
},
HuffmanCode {
bits: 6,
value: 96,
},
HuffmanCode {
bits: 10,
value: 313,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 152,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 7,
value: 253,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 232,
},
HuffmanCode {
bits: 6,
value: 56,
},
HuffmanCode {
bits: 10,
value: 273,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 184,
},
HuffmanCode {
bits: 6,
value: 16,
},
HuffmanCode {
bits: 8,
value: 225,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 5,
},
HuffmanCode {
bits: 6,
value: 120,
},
HuffmanCode {
bits: 11,
value: 341,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 144,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 248,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 6,
value: 40,
},
HuffmanCode {
bits: 10,
value: 241,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 176,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 8,
value: 77,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 7,
value: 2,
},
HuffmanCode {
bits: 6,
value: 104,
},
HuffmanCode {
bits: 10,
value: 297,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 160,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 8,
value: 6,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 240,
},
HuffmanCode {
bits: 6,
value: 76,
},
HuffmanCode {
bits: 10,
value: 257,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 192,
},
HuffmanCode {
bits: 6,
value: 24,
},
HuffmanCode {
bits: 9,
value: 199,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 137,
},
HuffmanCode {
bits: 6,
value: 128,
},
HuffmanCode {
bits: 11,
value: 341,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 136,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 224,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 200,
},
HuffmanCode {
bits: 6,
value: 32,
},
HuffmanCode {
bits: 10,
value: 201,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 168,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 8,
value: 13,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 6,
value: 255,
},
HuffmanCode {
bits: 6,
value: 96,
},
HuffmanCode {
bits: 10,
value: 257,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 152,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 7,
value: 254,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 232,
},
HuffmanCode {
bits: 6,
value: 56,
},
HuffmanCode {
bits: 10,
value: 217,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 184,
},
HuffmanCode {
bits: 6,
value: 16,
},
HuffmanCode {
bits: 8,
value: 247,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 73,
},
HuffmanCode {
bits: 6,
value: 120,
},
HuffmanCode {
bits: 11,
value: 293,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 144,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 252,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 6,
value: 40,
},
HuffmanCode {
bits: 10,
value: 185,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 176,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 8,
value: 116,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 7,
value: 4,
},
HuffmanCode {
bits: 6,
value: 104,
},
HuffmanCode {
bits: 11,
value: 245,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 160,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 8,
value: 9,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 240,
},
HuffmanCode {
bits: 6,
value: 76,
},
HuffmanCode {
bits: 10,
value: 201,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 192,
},
HuffmanCode {
bits: 6,
value: 24,
},
HuffmanCode {
bits: 9,
value: 139,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 139,
},
HuffmanCode {
bits: 6,
value: 128,
},
HuffmanCode {
bits: 11,
value: 293,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 136,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 216,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 200,
},
HuffmanCode {
bits: 6,
value: 32,
},
HuffmanCode {
bits: 10,
value: 133,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 168,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 8,
value: 12,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 6,
value: 255,
},
HuffmanCode {
bits: 6,
value: 96,
},
HuffmanCode {
bits: 10,
value: 189,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 152,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 7,
value: 253,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 232,
},
HuffmanCode {
bits: 6,
value: 56,
},
HuffmanCode {
bits: 10,
value: 149,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 184,
},
HuffmanCode {
bits: 6,
value: 16,
},
HuffmanCode {
bits: 8,
value: 233,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 5,
},
HuffmanCode {
bits: 6,
value: 120,
},
HuffmanCode {
bits: 11,
value: 221,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 144,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 248,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 6,
value: 40,
},
HuffmanCode {
bits: 10,
value: 117,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 176,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 8,
value: 102,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 7,
value: 2,
},
HuffmanCode {
bits: 6,
value: 104,
},
HuffmanCode {
bits: 11,
value: 173,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 160,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 8,
value: 7,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 240,
},
HuffmanCode {
bits: 6,
value: 76,
},
HuffmanCode {
bits: 10,
value: 133,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 192,
},
HuffmanCode {
bits: 6,
value: 24,
},
HuffmanCode {
bits: 9,
value: 73,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 137,
},
HuffmanCode {
bits: 6,
value: 128,
},
HuffmanCode {
bits: 11,
value: 221,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 136,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 224,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 200,
},
HuffmanCode {
bits: 6,
value: 32,
},
HuffmanCode {
bits: 10,
value: 77,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 168,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 8,
value: 20,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 6,
value: 255,
},
HuffmanCode {
bits: 6,
value: 96,
},
HuffmanCode {
bits: 10,
value: 133,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 152,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 7,
value: 254,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 232,
},
HuffmanCode {
bits: 6,
value: 56,
},
HuffmanCode {
bits: 10,
value: 93,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 184,
},
HuffmanCode {
bits: 6,
value: 16,
},
HuffmanCode {
bits: 9,
value: 37,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 73,
},
HuffmanCode {
bits: 6,
value: 120,
},
HuffmanCode {
bits: 11,
value: 173,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 144,
},
HuffmanCode {
bits: 5,
value: 88,
},
HuffmanCode {
bits: 7,
value: 252,
},
HuffmanCode {
bits: 5,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 6,
value: 40,
},
HuffmanCode {
bits: 10,
value: 61,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 176,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 8,
value: 170,
},
HuffmanCode {
bits: 5,
value: 64,
},
HuffmanCode {
bits: 7,
value: 4,
},
HuffmanCode {
bits: 6,
value: 104,
},
HuffmanCode {
bits: 11,
value: 125,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 160,
},
HuffmanCode {
bits: 5,
value: 112,
},
HuffmanCode {
bits: 8,
value: 10,
},
HuffmanCode {
bits: 5,
value: 48,
},
HuffmanCode {
bits: 6,
value: 240,
},
HuffmanCode {
bits: 6,
value: 76,
},
HuffmanCode {
bits: 10,
value: 77,
},
HuffmanCode {
bits: 4,
value: 72,
},
HuffmanCode {
bits: 6,
value: 192,
},
HuffmanCode {
bits: 6,
value: 24,
},
HuffmanCode {
bits: 9,
value: 13,
},
HuffmanCode {
bits: 5,
value: 80,
},
HuffmanCode {
bits: 7,
value: 139,
},
HuffmanCode {
bits: 6,
value: 128,
},
HuffmanCode {
bits: 11,
value: 173,
},
HuffmanCode {
bits: 1,
value: 14,
},
HuffmanCode {
bits: 1,
value: 15,
},
HuffmanCode {
bits: 1,
value: 47,
},
HuffmanCode {
bits: 1,
value: 65,
},
HuffmanCode {
bits: 1,
value: 66,
},
HuffmanCode {
bits: 1,
value: 67,
},
HuffmanCode {
bits: 1,
value: 68,
},
HuffmanCode {
bits: 1,
value: 69,
},
HuffmanCode {
bits: 1,
value: 78,
},
HuffmanCode {
bits: 1,
value: 138,
},
HuffmanCode {
bits: 1,
value: 191,
},
HuffmanCode {
bits: 1,
value: 251,
},
HuffmanCode {
bits: 2,
value: 17,
},
HuffmanCode {
bits: 2,
value: 25,
},
HuffmanCode {
bits: 2,
value: 22,
},
HuffmanCode {
bits: 2,
value: 26,
},
HuffmanCode {
bits: 2,
value: 27,
},
HuffmanCode {
bits: 2,
value: 29,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 2,
value: 30,
},
HuffmanCode {
bits: 2,
value: 31,
},
HuffmanCode {
bits: 2,
value: 34,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 2,
value: 35,
},
HuffmanCode {
bits: 2,
value: 36,
},
HuffmanCode {
bits: 2,
value: 38,
},
HuffmanCode {
bits: 2,
value: 37,
},
HuffmanCode {
bits: 2,
value: 39,
},
HuffmanCode {
bits: 2,
value: 49,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 50,
},
HuffmanCode {
bits: 2,
value: 52,
},
HuffmanCode {
bits: 2,
value: 53,
},
HuffmanCode {
bits: 2,
value: 55,
},
HuffmanCode {
bits: 2,
value: 54,
},
HuffmanCode {
bits: 2,
value: 71,
},
HuffmanCode {
bits: 2,
value: 75,
},
HuffmanCode {
bits: 2,
value: 82,
},
HuffmanCode {
bits: 2,
value: 81,
},
HuffmanCode {
bits: 2,
value: 83,
},
HuffmanCode {
bits: 2,
value: 84,
},
HuffmanCode {
bits: 2,
value: 86,
},
HuffmanCode {
bits: 2,
value: 85,
},
HuffmanCode {
bits: 2,
value: 87,
},
HuffmanCode {
bits: 2,
value: 89,
},
HuffmanCode {
bits: 2,
value: 91,
},
HuffmanCode {
bits: 2,
value: 90,
},
HuffmanCode {
bits: 2,
value: 92,
},
HuffmanCode {
bits: 2,
value: 93,
},
HuffmanCode {
bits: 2,
value: 95,
},
HuffmanCode {
bits: 2,
value: 94,
},
HuffmanCode {
bits: 2,
value: 117,
},
HuffmanCode {
bits: 2,
value: 129,
},
HuffmanCode {
bits: 2,
value: 131,
},
HuffmanCode {
bits: 2,
value: 130,
},
HuffmanCode {
bits: 2,
value: 132,
},
HuffmanCode {
bits: 2,
value: 133,
},
HuffmanCode {
bits: 2,
value: 135,
},
HuffmanCode {
bits: 2,
value: 134,
},
HuffmanCode {
bits: 2,
value: 140,
},
HuffmanCode {
bits: 2,
value: 141,
},
HuffmanCode {
bits: 2,
value: 143,
},
HuffmanCode {
bits: 2,
value: 142,
},
HuffmanCode {
bits: 2,
value: 169,
},
HuffmanCode {
bits: 2,
value: 193,
},
HuffmanCode {
bits: 2,
value: 195,
},
HuffmanCode {
bits: 2,
value: 194,
},
HuffmanCode {
bits: 2,
value: 196,
},
HuffmanCode {
bits: 2,
value: 197,
},
HuffmanCode {
bits: 2,
value: 199,
},
HuffmanCode {
bits: 2,
value: 198,
},
HuffmanCode {
bits: 2,
value: 201,
},
HuffmanCode {
bits: 2,
value: 202,
},
HuffmanCode {
bits: 2,
value: 204,
},
HuffmanCode {
bits: 2,
value: 203,
},
HuffmanCode {
bits: 2,
value: 205,
},
HuffmanCode {
bits: 2,
value: 206,
},
HuffmanCode {
bits: 2,
value: 217,
},
HuffmanCode {
bits: 2,
value: 207,
},
HuffmanCode {
bits: 2,
value: 218,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 221,
},
HuffmanCode {
bits: 2,
value: 220,
},
HuffmanCode {
bits: 2,
value: 222,
},
HuffmanCode {
bits: 2,
value: 223,
},
HuffmanCode {
bits: 2,
value: 242,
},
HuffmanCode {
bits: 2,
value: 241,
},
HuffmanCode {
bits: 2,
value: 243,
},
HuffmanCode {
bits: 2,
value: 244,
},
HuffmanCode {
bits: 2,
value: 246,
},
HuffmanCode {
bits: 2,
value: 245,
},
HuffmanCode {
bits: 2,
value: 250,
},
HuffmanCode {
bits: 3,
value: 21,
},
HuffmanCode {
bits: 3,
value: 44,
},
HuffmanCode {
bits: 3,
value: 42,
},
HuffmanCode {
bits: 3,
value: 46,
},
HuffmanCode {
bits: 3,
value: 41,
},
HuffmanCode {
bits: 3,
value: 45,
},
HuffmanCode {
bits: 3,
value: 43,
},
HuffmanCode {
bits: 3,
value: 57,
},
HuffmanCode {
bits: 3,
value: 58,
},
HuffmanCode {
bits: 3,
value: 62,
},
HuffmanCode {
bits: 3,
value: 60,
},
HuffmanCode {
bits: 3,
value: 97,
},
HuffmanCode {
bits: 3,
value: 59,
},
HuffmanCode {
bits: 3,
value: 63,
},
HuffmanCode {
bits: 3,
value: 61,
},
HuffmanCode {
bits: 3,
value: 98,
},
HuffmanCode {
bits: 3,
value: 99,
},
HuffmanCode {
bits: 3,
value: 106,
},
HuffmanCode {
bits: 3,
value: 101,
},
HuffmanCode {
bits: 3,
value: 108,
},
HuffmanCode {
bits: 3,
value: 100,
},
HuffmanCode {
bits: 3,
value: 107,
},
HuffmanCode {
bits: 3,
value: 105,
},
HuffmanCode {
bits: 3,
value: 109,
},
HuffmanCode {
bits: 3,
value: 110,
},
HuffmanCode {
bits: 3,
value: 122,
},
HuffmanCode {
bits: 3,
value: 118,
},
HuffmanCode {
bits: 3,
value: 124,
},
HuffmanCode {
bits: 3,
value: 111,
},
HuffmanCode {
bits: 3,
value: 123,
},
HuffmanCode {
bits: 3,
value: 121,
},
HuffmanCode {
bits: 3,
value: 125,
},
HuffmanCode {
bits: 3,
value: 126,
},
HuffmanCode {
bits: 3,
value: 147,
},
HuffmanCode {
bits: 3,
value: 145,
},
HuffmanCode {
bits: 3,
value: 149,
},
HuffmanCode {
bits: 3,
value: 127,
},
HuffmanCode {
bits: 3,
value: 148,
},
HuffmanCode {
bits: 3,
value: 146,
},
HuffmanCode {
bits: 3,
value: 150,
},
HuffmanCode {
bits: 3,
value: 151,
},
HuffmanCode {
bits: 3,
value: 156,
},
HuffmanCode {
bits: 3,
value: 154,
},
HuffmanCode {
bits: 3,
value: 158,
},
HuffmanCode {
bits: 3,
value: 153,
},
HuffmanCode {
bits: 3,
value: 157,
},
HuffmanCode {
bits: 3,
value: 155,
},
HuffmanCode {
bits: 3,
value: 159,
},
HuffmanCode {
bits: 3,
value: 161,
},
HuffmanCode {
bits: 3,
value: 165,
},
HuffmanCode {
bits: 3,
value: 163,
},
HuffmanCode {
bits: 3,
value: 167,
},
HuffmanCode {
bits: 3,
value: 162,
},
HuffmanCode {
bits: 3,
value: 166,
},
HuffmanCode {
bits: 3,
value: 164,
},
HuffmanCode {
bits: 3,
value: 171,
},
HuffmanCode {
bits: 3,
value: 177,
},
HuffmanCode {
bits: 3,
value: 181,
},
HuffmanCode {
bits: 3,
value: 179,
},
HuffmanCode {
bits: 3,
value: 183,
},
HuffmanCode {
bits: 3,
value: 178,
},
HuffmanCode {
bits: 3,
value: 182,
},
HuffmanCode {
bits: 3,
value: 180,
},
HuffmanCode {
bits: 3,
value: 185,
},
HuffmanCode {
bits: 3,
value: 186,
},
HuffmanCode {
bits: 3,
value: 190,
},
HuffmanCode {
bits: 3,
value: 188,
},
HuffmanCode {
bits: 3,
value: 210,
},
HuffmanCode {
bits: 3,
value: 187,
},
HuffmanCode {
bits: 3,
value: 209,
},
HuffmanCode {
bits: 3,
value: 189,
},
HuffmanCode {
bits: 3,
value: 211,
},
HuffmanCode {
bits: 3,
value: 212,
},
HuffmanCode {
bits: 3,
value: 226,
},
HuffmanCode {
bits: 3,
value: 214,
},
HuffmanCode {
bits: 3,
value: 228,
},
HuffmanCode {
bits: 3,
value: 213,
},
HuffmanCode {
bits: 3,
value: 227,
},
HuffmanCode {
bits: 3,
value: 215,
},
HuffmanCode {
bits: 3,
value: 229,
},
HuffmanCode {
bits: 3,
value: 230,
},
HuffmanCode {
bits: 3,
value: 236,
},
HuffmanCode {
bits: 3,
value: 234,
},
HuffmanCode {
bits: 3,
value: 238,
},
HuffmanCode {
bits: 3,
value: 231,
},
HuffmanCode {
bits: 3,
value: 237,
},
HuffmanCode {
bits: 3,
value: 235,
},
HuffmanCode {
bits: 3,
value: 239,
}];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn singlelevel() {
let symbol_array: [u16; BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
BROTLI_HUFFMAN_MAX_CODE_LENGTHS_SIZE] =
[65535, 65535, 65535, 137, 0, 16, 2, 17, 33, 65535, 65535, 65535, 65535, 65535, 65535, 65535,
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,
26, 32, 28, 29, 30, 31, 249, 184, 34, 35, 36, 37, 38, 39, 40, 48, 42, 43, 44, 45, 46, 47, 58,
49, 50, 51, 52, 53, 54, 55, 56, 72, 58, 59, 60, 61, 62, 63, 64, 65, 130, 67, 68, 69, 70, 71,
77, 129, 76, 193, 192, 200, 78, 79, 80, 81, 82, 83, 84, 90, 86, 87, 88, 89, 90, 102, 92, 118,
94, 95, 96, 97, 98, 99, 100, 101, 103, 103, 104, 105, 106, 107, 108, 115, 110, 111, 112, 113,
114, 115, 127, 117, 253, 119, 120, 121, 122, 123, 124, 140, 204, 127, 128, 129, 131, 156,
138, 133, 134, 135, 136, 137, 255, 139, 140, 141, 150, 143, 144, 145, 146, 147, 148, 149,
150, 152, 152, 159, 154, 155, 156, 208, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 192,
194, 187, 188, 213, 190, 197, 196, 200, 195, 195, 196, 197, 198, 199, 200, 235, 202, 203,
204, 205, 206, 207, 208, 209, 224, 212, 222, 218, 236, 215, 216, 217, 240, 219, 220, 221,
225, 223, 224, 225, 226, 227, 228, 236, 230, 231, 232, 233, 234, 241, 254, 237, 238, 239,
240, 248, 244, 243, 246, 250, 246, 247, 251, 249, 250, 251, 252, 253, 254, 255, 0, 23040,
3500, 1, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 38400, 3500, 1, 0, 61712,
21033, 32767, 0, 60189, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0,
51712, 3501, 1, 0, 15360, 0, 0, 0, 1536, 3502, 1, 0, 8192, 3500, 1, 0, 61792, 21033, 32767,
0, 61458, 35058, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4102, 0, 0, 0, 38400, 3500, 1, 0, 0, 0, 0,
0, 256, 0, 0, 0, 0, 0, 0, 0, 8192, 3500, 1, 0, 61792, 21033, 32767, 0, 18208, 35059, 32767,
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,
32768, 54143, 32705, 0, 0, 54016, 32705, 0, 0, 54016, 32705, 0, 3584, 0, 0, 0, 6, 0, 0,
65408, 7, 3502, 32767, 0, 8192, 3500, 1, 0, 0, 54016, 32705, 0, 1, 0, 0, 0, 8192, 3500, 1, 0,
12288, 54016, 32705, 0, 8192, 54016, 32705, 0, 61888, 21033, 32767, 0, 14237, 35059, 32767,
0, 88, 53952, 32705, 0, 4607, 0, 0, 0, 8, 0, 0, 0, 4608, 54016, 32705, 0, 8192, 3500, 1, 0,
8192, 3500, 1, 0, 62016, 21033, 32767, 0, 16544, 35059, 32767, 0, 4096, 0, 0, 0, 8192, 3500,
1, 0, 61936, 21033, 32767, 0, 12502, 35059, 32767, 0, 0, 0, 0, 0, 43957, 36820, 32767, 0, 0,
0, 0, 0, 44144, 37434, 32767, 0, 19984, 53952, 32705, 0, 0, 0, 0, 0, 62076, 21033, 32767, 0,
62080, 21033, 32767, 0, 62084, 21033, 32767, 0, 64, 53952, 32705, 0, 65535, 65535, 65535,
65535, 64, 0, 8296, 1, 62032, 21033, 32767, 0, 16900, 27601, 32767, 0, 18096, 27604, 32767,
0, 0, 0, 0, 0, 62080, 21033, 32767, 0, 17447, 27601, 32767, 0, 62080, 21033, 32767, 0, 17246,
27601, 32767, 0, 0, 0, 0, 0, 62784, 36821, 32767, 0, 62144, 21033, 32767, 0, 4085, 27601,
32767, 0, 44624, 27603, 32767, 0, 62784, 36821, 32767, 0, 10112, 30246, 32767, 0, 46488,
27603, 32767, 0, 18096, 27604, 32767, 0, 0, 0, 0, 0, 62256, 21033, 32767, 0, 23819, 27601,
32767, 0, 62288, 21033, 32767, 0, 20326, 27600, 32767, 0, 15584, 36820, 32767, 0, 15096,
36820, 32767, 0, 12288, 36820, 32767, 0, 15120, 36820, 32767, 0, 42681, 21547, 0, 0, 18096,
27604, 32767, 0, 62400, 21033, 32767, 0, 1299, 0, 0, 0, 51315, 34237, 23510, 56320, 18096,
27604, 32767, 0, 62400, 21033, 32767, 0, 11120, 27601, 32767, 0, 13272, 27604, 32767, 0, 28,
0, 0, 0, 62384, 21033, 32767, 0, 10134, 27601, 32767, 0, 11072, 30235, 32767, 0, 0, 0, 50, 0];
let mut counts: [u16; 9] = [0, 0, 0, 2, 3, 7, 13, 6, 24];
let end_counts: [u16; 9] = [0, 0, 0, 2, 3, 7, 13, 6, 24];
let mut table: [HuffmanCode; 260] = [HuffmanCode {
bits: 0,
value: 0,
}; 260];
let size = BrotliBuildHuffmanTable(&mut table, 8, &symbol_array, 16, &mut counts);
assert_eq!(size, 256);
assert_eq!(counts, end_counts);
let end_table: [HuffmanCode; 260] = [HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 249,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 130,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 4,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 48,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 10,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 2,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 33,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 6,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 56,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 9,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 251,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 156,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 5,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 52,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 37,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 7,
value: 17,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 7,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 138,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 250,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 130,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 4,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 50,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 10,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 2,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 35,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 6,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 129,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 9,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 252,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 156,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 5,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 54,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 39,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 7,
value: 31,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 7,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 140,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 249,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 130,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 4,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 49,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 10,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 2,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 34,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 6,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 72,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 9,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 251,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 156,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 5,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 53,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 38,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 7,
value: 17,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 7,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 139,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 8,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 250,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 130,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 4,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 51,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 10,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 2,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 36,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 208,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 6,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 131,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 184,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 9,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 5,
value: 254,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 7,
value: 252,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 200,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 6,
value: 156,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 5,
},
HuffmanCode {
bits: 5,
value: 16,
},
HuffmanCode {
bits: 8,
value: 55,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 192,
},
HuffmanCode {
bits: 4,
value: 0,
},
HuffmanCode {
bits: 6,
value: 65,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 3,
},
HuffmanCode {
bits: 4,
value: 253,
},
HuffmanCode {
bits: 8,
value: 40,
},
HuffmanCode {
bits: 3,
value: 137,
},
HuffmanCode {
bits: 5,
value: 235,
},
HuffmanCode {
bits: 4,
value: 1,
},
HuffmanCode {
bits: 7,
value: 31,
},
HuffmanCode {
bits: 3,
value: 255,
},
HuffmanCode {
bits: 6,
value: 7,
},
HuffmanCode {
bits: 5,
value: 32,
},
HuffmanCode {
bits: 8,
value: 141,
},
HuffmanCode {
bits: 0,
value: 0,
},
HuffmanCode {
bits: 0,
value: 0,
},
HuffmanCode {
bits: 0,
value: 0,
},
HuffmanCode {
bits: 0,
value: 0,
}];
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn simple_0() {
let mut table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 0,
}; 256];
let end_table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 32,
}; 256];
let mut val: [u16; 1] = [32];
let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 0);
assert_eq!(goal_size, 256);
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn simple_1() {
let mut table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 0,
}; 256];
let end_table: [HuffmanCode; 256] = [HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
},
HuffmanCode {
bits: 1,
value: 146,
},
HuffmanCode {
bits: 1,
value: 192,
}];
let mut val: [u16; 2] = [146, 192];
let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 1);
assert_eq!(goal_size, 256);
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn simple_2() {
let mut table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 0,
}; 256];
let end_table: [HuffmanCode; 256] = [HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 28,
},
HuffmanCode {
bits: 1,
value: 32,
},
HuffmanCode {
bits: 2,
value: 33,
}];
let mut val: [u16; 3] = [32, 28, 33];
let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 2);
assert_eq!(goal_size, 256);
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn simple_3() {
let mut table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 0,
}; 256];
let end_table: [HuffmanCode; 256] = [HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
},
HuffmanCode {
bits: 2,
value: 6,
},
HuffmanCode {
bits: 2,
value: 59,
},
HuffmanCode {
bits: 2,
value: 51,
},
HuffmanCode {
bits: 2,
value: 219,
}];
let mut val: [u16; 4] = [51, 6, 59, 219];
let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 3);
assert_eq!(goal_size, 256);
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}
#[test]
fn simple_4() {
let mut table: [HuffmanCode; 256] = [HuffmanCode {
bits: 0,
value: 0,
}; 256];
let end_table: [HuffmanCode; 256] = [HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 10,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 2,
value: 118,
},
HuffmanCode {
bits: 1,
value: 6,
},
HuffmanCode {
bits: 3,
value: 15,
}];
let mut val: [u16; 5] = [6, 118, 15, 10, 65535];
let goal_size = BrotliBuildSimpleHuffmanTable(&mut table, 8, &mut val, 4);
assert_eq!(goal_size, 256);
for index in 0..end_table.len() {
assert_eq!([index, table[index].bits as usize, table[index].value as usize],
[index, end_table[index].bits as usize, end_table[index].value as usize]);
assert!(table[index] == end_table[index]);
}
}