mirror of
https://github.com/ziglang/zig.git
synced 2025-12-09 15:53:08 +00:00
Zig deflate compression/decompression implementation. It supports compression and decompression of gzip, zlib and raw deflate format. Fixes #18062. This PR replaces current compress/gzip and compress/zlib packages. Deflate package is renamed to flate. Flate is common name for deflate/inflate where deflate is compression and inflate decompression. There are breaking change. Methods signatures are changed because of removal of the allocator, and I also unified API for all three namespaces (flate, gzip, zlib). Currently I put old packages under v1 namespace they are still available as compress/v1/gzip, compress/v1/zlib, compress/v1/deflate. Idea is to give users of the current API little time to postpone analyzing what they had to change. Although that rises question when it is safe to remove that v1 namespace. Here is current API in the compress package: ```Zig // deflate fn compressor(allocator, writer, options) !Compressor(@TypeOf(writer)) fn Compressor(comptime WriterType) type fn decompressor(allocator, reader, null) !Decompressor(@TypeOf(reader)) fn Decompressor(comptime ReaderType: type) type // gzip fn compress(allocator, writer, options) !Compress(@TypeOf(writer)) fn Compress(comptime WriterType: type) type fn decompress(allocator, reader) !Decompress(@TypeOf(reader)) fn Decompress(comptime ReaderType: type) type // zlib fn compressStream(allocator, writer, options) !CompressStream(@TypeOf(writer)) fn CompressStream(comptime WriterType: type) type fn decompressStream(allocator, reader) !DecompressStream(@TypeOf(reader)) fn DecompressStream(comptime ReaderType: type) type // xz fn decompress(allocator: Allocator, reader: anytype) !Decompress(@TypeOf(reader)) fn Decompress(comptime ReaderType: type) type // lzma fn decompress(allocator, reader) !Decompress(@TypeOf(reader)) fn Decompress(comptime ReaderType: type) type // lzma2 fn decompress(allocator, reader, writer !void // zstandard: fn DecompressStream(ReaderType, options) type fn decompressStream(allocator, reader) DecompressStream(@TypeOf(reader), .{}) struct decompress ``` The proposed naming convention: - Compressor/Decompressor for functions which return type, like Reader/Writer/GeneralPurposeAllocator - compressor/compressor for functions which are initializers for that type, like reader/writer/allocator - compress/decompress for one shot operations, accepts reader/writer pair, like read/write/alloc ```Zig /// Compress from reader and write compressed data to the writer. fn compress(reader: anytype, writer: anytype, options: Options) !void /// Create Compressor which outputs the writer. fn compressor(writer: anytype, options: Options) !Compressor(@TypeOf(writer)) /// Compressor type fn Compressor(comptime WriterType: type) type /// Decompress from reader and write plain data to the writer. fn decompress(reader: anytype, writer: anytype) !void /// Create Decompressor which reads from reader. fn decompressor(reader: anytype) Decompressor(@TypeOf(reader) /// Decompressor type fn Decompressor(comptime ReaderType: type) type ``` Comparing this implementation with the one we currently have in Zig's standard library (std). Std is roughly 1.2-1.4 times slower in decompression, and 1.1-1.2 times slower in compression. Compressed sizes are pretty much same in both cases. More resutls in [this](https://github.com/ianic/flate) repo. This library uses static allocations for all structures, doesn't require allocator. That makes sense especially for deflate where all structures, internal buffers are allocated to the full size. Little less for inflate where we std version uses less memory by not preallocating to theoretical max size array which are usually not fully used. For deflate this library allocates 395K while std 779K. For inflate this library allocates 74.5K while std around 36K. Inflate difference is because we here use 64K history instead of 32K in std. If merged existing usage of compress gzip/zlib/deflate need some changes. Here is example with necessary changes in comments: ```Zig const std = @import("std"); // To get this file: // wget -nc -O war_and_peace.txt https://www.gutenberg.org/ebooks/2600.txt.utf-8 const data = @embedFile("war_and_peace.txt"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer std.debug.assert(gpa.deinit() == .ok); const allocator = gpa.allocator(); try oldDeflate(allocator); try new(std.compress.flate, allocator); try oldZlib(allocator); try new(std.compress.zlib, allocator); try oldGzip(allocator); try new(std.compress.gzip, allocator); } pub fn new(comptime pkg: type, allocator: std.mem.Allocator) !void { var buf = std.ArrayList(u8).init(allocator); defer buf.deinit(); // Compressor var cmp = try pkg.compressor(buf.writer(), .{}); _ = try cmp.write(data); try cmp.finish(); var fbs = std.io.fixedBufferStream(buf.items); // Decompressor var dcp = pkg.decompressor(fbs.reader()); const plain = try dcp.reader().readAllAlloc(allocator, std.math.maxInt(usize)); defer allocator.free(plain); try std.testing.expectEqualSlices(u8, data, plain); } pub fn oldDeflate(allocator: std.mem.Allocator) !void { const deflate = std.compress.v1.deflate; // Compressor var buf = std.ArrayList(u8).init(allocator); defer buf.deinit(); // Remove allocator // Rename deflate -> flate var cmp = try deflate.compressor(allocator, buf.writer(), .{}); _ = try cmp.write(data); try cmp.close(); // Rename to finish cmp.deinit(); // Remove // Decompressor var fbs = std.io.fixedBufferStream(buf.items); // Remove allocator and last param // Rename deflate -> flate // Remove try var dcp = try deflate.decompressor(allocator, fbs.reader(), null); defer dcp.deinit(); // Remove const plain = try dcp.reader().readAllAlloc(allocator, std.math.maxInt(usize)); defer allocator.free(plain); try std.testing.expectEqualSlices(u8, data, plain); } pub fn oldZlib(allocator: std.mem.Allocator) !void { const zlib = std.compress.v1.zlib; var buf = std.ArrayList(u8).init(allocator); defer buf.deinit(); // Compressor // Rename compressStream => compressor // Remove allocator var cmp = try zlib.compressStream(allocator, buf.writer(), .{}); _ = try cmp.write(data); try cmp.finish(); cmp.deinit(); // Remove var fbs = std.io.fixedBufferStream(buf.items); // Decompressor // decompressStream => decompressor // Remove allocator // Remove try var dcp = try zlib.decompressStream(allocator, fbs.reader()); defer dcp.deinit(); // Remove const plain = try dcp.reader().readAllAlloc(allocator, std.math.maxInt(usize)); defer allocator.free(plain); try std.testing.expectEqualSlices(u8, data, plain); } pub fn oldGzip(allocator: std.mem.Allocator) !void { const gzip = std.compress.v1.gzip; var buf = std.ArrayList(u8).init(allocator); defer buf.deinit(); // Compressor // Rename compress => compressor // Remove allocator var cmp = try gzip.compress(allocator, buf.writer(), .{}); _ = try cmp.write(data); try cmp.close(); // Rename to finisho cmp.deinit(); // Remove var fbs = std.io.fixedBufferStream(buf.items); // Decompressor // Rename decompress => decompressor // Remove allocator // Remove try var dcp = try gzip.decompress(allocator, fbs.reader()); defer dcp.deinit(); // Remove const plain = try dcp.reader().readAllAlloc(allocator, std.math.maxInt(usize)); defer allocator.free(plain); try std.testing.expectEqualSlices(u8, data, plain); } ```
607 lines
60 KiB
Zig
607 lines
60 KiB
Zig
const Token = @import("../Token.zig");
|
|
|
|
pub const TestCase = struct {
|
|
tokens: []const Token,
|
|
input: []const u8 = "", // File name of input data matching the tokens.
|
|
want: []const u8 = "", // File name of data with the expected output with input available.
|
|
want_no_input: []const u8 = "", // File name of the expected output when no input is available.
|
|
};
|
|
|
|
pub const testCases = blk: {
|
|
@setEvalBranchQuota(4096 * 2);
|
|
|
|
const L = Token.initLiteral;
|
|
const M = Token.initMatch;
|
|
const ml = M(1, 258); // Maximum length token. Used to reduce the size of writeBlockTests
|
|
|
|
break :blk &[_]TestCase{
|
|
TestCase{
|
|
.input = "huffman-null-max.input",
|
|
.want = "huffman-null-max.{s}.expect",
|
|
.want_no_input = "huffman-null-max.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L(0x0), ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, L(0x0), L(0x0),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-pi.input",
|
|
.want = "huffman-pi.{s}.expect",
|
|
.want_no_input = "huffman-pi.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L('3'), L('.'), L('1'), L('4'), L('1'), L('5'), L('9'), L('2'),
|
|
L('6'), L('5'), L('3'), L('5'), L('8'), L('9'), L('7'), L('9'),
|
|
L('3'), L('2'), L('3'), L('8'), L('4'), L('6'), L('2'), L('6'),
|
|
L('4'), L('3'), L('3'), L('8'), L('3'), L('2'), L('7'), L('9'),
|
|
L('5'), L('0'), L('2'), L('8'), L('8'), L('4'), L('1'), L('9'),
|
|
L('7'), L('1'), L('6'), L('9'), L('3'), L('9'), L('9'), L('3'),
|
|
L('7'), L('5'), L('1'), L('0'), L('5'), L('8'), L('2'), L('0'),
|
|
L('9'), L('7'), L('4'), L('9'), L('4'), L('4'), L('5'), L('9'),
|
|
L('2'), L('3'), L('0'), L('7'), L('8'), L('1'), L('6'), L('4'),
|
|
L('0'), L('6'), L('2'), L('8'), L('6'), L('2'), L('0'), L('8'),
|
|
L('9'), L('9'), L('8'), L('6'), L('2'), L('8'), L('0'), L('3'),
|
|
L('4'), L('8'), L('2'), L('5'), L('3'), L('4'), L('2'), L('1'),
|
|
L('1'), L('7'), L('0'), L('6'), L('7'), L('9'), L('8'), L('2'),
|
|
L('1'), L('4'), L('8'), L('0'), L('8'), L('6'), L('5'), L('1'),
|
|
L('3'), L('2'), L('8'), L('2'), L('3'), L('0'), L('6'), L('6'),
|
|
L('4'), L('7'), L('0'), L('9'), L('3'), L('8'), L('4'), L('4'),
|
|
L('6'), L('0'), L('9'), L('5'), L('5'), L('0'), L('5'), L('8'),
|
|
L('2'), L('2'), L('3'), L('1'), L('7'), L('2'), L('5'), L('3'),
|
|
L('5'), L('9'), L('4'), L('0'), L('8'), L('1'), L('2'), L('8'),
|
|
L('4'), L('8'), L('1'), L('1'), L('1'), L('7'), L('4'), M(127, 4),
|
|
L('4'), L('1'), L('0'), L('2'), L('7'), L('0'), L('1'), L('9'),
|
|
L('3'), L('8'), L('5'), L('2'), L('1'), L('1'), L('0'), L('5'),
|
|
L('5'), L('5'), L('9'), L('6'), L('4'), L('4'), L('6'), L('2'),
|
|
L('2'), L('9'), L('4'), L('8'), L('9'), L('5'), L('4'), L('9'),
|
|
L('3'), L('0'), L('3'), L('8'), L('1'), M(19, 4), L('2'), L('8'),
|
|
L('8'), L('1'), L('0'), L('9'), L('7'), L('5'), L('6'), L('6'),
|
|
L('5'), L('9'), L('3'), L('3'), L('4'), L('4'), L('6'), M(72, 4),
|
|
L('7'), L('5'), L('6'), L('4'), L('8'), L('2'), L('3'), L('3'),
|
|
L('7'), L('8'), L('6'), L('7'), L('8'), L('3'), L('1'), L('6'),
|
|
L('5'), L('2'), L('7'), L('1'), L('2'), L('0'), L('1'), L('9'),
|
|
L('0'), L('9'), L('1'), L('4'), M(27, 4), L('5'), L('6'), L('6'),
|
|
L('9'), L('2'), L('3'), L('4'), L('6'), M(179, 4), L('6'), L('1'),
|
|
L('0'), L('4'), L('5'), L('4'), L('3'), L('2'), L('6'), M(51, 4),
|
|
L('1'), L('3'), L('3'), L('9'), L('3'), L('6'), L('0'), L('7'),
|
|
L('2'), L('6'), L('0'), L('2'), L('4'), L('9'), L('1'), L('4'),
|
|
L('1'), L('2'), L('7'), L('3'), L('7'), L('2'), L('4'), L('5'),
|
|
L('8'), L('7'), L('0'), L('0'), L('6'), L('6'), L('0'), L('6'),
|
|
L('3'), L('1'), L('5'), L('5'), L('8'), L('8'), L('1'), L('7'),
|
|
L('4'), L('8'), L('8'), L('1'), L('5'), L('2'), L('0'), L('9'),
|
|
L('2'), L('0'), L('9'), L('6'), L('2'), L('8'), L('2'), L('9'),
|
|
L('2'), L('5'), L('4'), L('0'), L('9'), L('1'), L('7'), L('1'),
|
|
L('5'), L('3'), L('6'), L('4'), L('3'), L('6'), L('7'), L('8'),
|
|
L('9'), L('2'), L('5'), L('9'), L('0'), L('3'), L('6'), L('0'),
|
|
L('0'), L('1'), L('1'), L('3'), L('3'), L('0'), L('5'), L('3'),
|
|
L('0'), L('5'), L('4'), L('8'), L('8'), L('2'), L('0'), L('4'),
|
|
L('6'), L('6'), L('5'), L('2'), L('1'), L('3'), L('8'), L('4'),
|
|
L('1'), L('4'), L('6'), L('9'), L('5'), L('1'), L('9'), L('4'),
|
|
L('1'), L('5'), L('1'), L('1'), L('6'), L('0'), L('9'), L('4'),
|
|
L('3'), L('3'), L('0'), L('5'), L('7'), L('2'), L('7'), L('0'),
|
|
L('3'), L('6'), L('5'), L('7'), L('5'), L('9'), L('5'), L('9'),
|
|
L('1'), L('9'), L('5'), L('3'), L('0'), L('9'), L('2'), L('1'),
|
|
L('8'), L('6'), L('1'), L('1'), L('7'), M(234, 4), L('3'), L('2'),
|
|
M(10, 4), L('9'), L('3'), L('1'), L('0'), L('5'), L('1'), L('1'),
|
|
L('8'), L('5'), L('4'), L('8'), L('0'), L('7'), M(271, 4), L('3'),
|
|
L('7'), L('9'), L('9'), L('6'), L('2'), L('7'), L('4'), L('9'),
|
|
L('5'), L('6'), L('7'), L('3'), L('5'), L('1'), L('8'), L('8'),
|
|
L('5'), L('7'), L('5'), L('2'), L('7'), L('2'), L('4'), L('8'),
|
|
L('9'), L('1'), L('2'), L('2'), L('7'), L('9'), L('3'), L('8'),
|
|
L('1'), L('8'), L('3'), L('0'), L('1'), L('1'), L('9'), L('4'),
|
|
L('9'), L('1'), L('2'), L('9'), L('8'), L('3'), L('3'), L('6'),
|
|
L('7'), L('3'), L('3'), L('6'), L('2'), L('4'), L('4'), L('0'),
|
|
L('6'), L('5'), L('6'), L('6'), L('4'), L('3'), L('0'), L('8'),
|
|
L('6'), L('0'), L('2'), L('1'), L('3'), L('9'), L('4'), L('9'),
|
|
L('4'), L('6'), L('3'), L('9'), L('5'), L('2'), L('2'), L('4'),
|
|
L('7'), L('3'), L('7'), L('1'), L('9'), L('0'), L('7'), L('0'),
|
|
L('2'), L('1'), L('7'), L('9'), L('8'), M(154, 5), L('7'), L('0'),
|
|
L('2'), L('7'), L('7'), L('0'), L('5'), L('3'), L('9'), L('2'),
|
|
L('1'), L('7'), L('1'), L('7'), L('6'), L('2'), L('9'), L('3'),
|
|
L('1'), L('7'), L('6'), L('7'), L('5'), M(563, 5), L('7'), L('4'),
|
|
L('8'), L('1'), M(7, 4), L('6'), L('6'), L('9'), L('4'), L('0'),
|
|
M(488, 4), L('0'), L('0'), L('0'), L('5'), L('6'), L('8'), L('1'),
|
|
L('2'), L('7'), L('1'), L('4'), L('5'), L('2'), L('6'), L('3'),
|
|
L('5'), L('6'), L('0'), L('8'), L('2'), L('7'), L('7'), L('8'),
|
|
L('5'), L('7'), L('7'), L('1'), L('3'), L('4'), L('2'), L('7'),
|
|
L('5'), L('7'), L('7'), L('8'), L('9'), L('6'), M(298, 4), L('3'),
|
|
L('6'), L('3'), L('7'), L('1'), L('7'), L('8'), L('7'), L('2'),
|
|
L('1'), L('4'), L('6'), L('8'), L('4'), L('4'), L('0'), L('9'),
|
|
L('0'), L('1'), L('2'), L('2'), L('4'), L('9'), L('5'), L('3'),
|
|
L('4'), L('3'), L('0'), L('1'), L('4'), L('6'), L('5'), L('4'),
|
|
L('9'), L('5'), L('8'), L('5'), L('3'), L('7'), L('1'), L('0'),
|
|
L('5'), L('0'), L('7'), L('9'), M(203, 4), L('6'), M(340, 4), L('8'),
|
|
L('9'), L('2'), L('3'), L('5'), L('4'), M(458, 4), L('9'), L('5'),
|
|
L('6'), L('1'), L('1'), L('2'), L('1'), L('2'), L('9'), L('0'),
|
|
L('2'), L('1'), L('9'), L('6'), L('0'), L('8'), L('6'), L('4'),
|
|
L('0'), L('3'), L('4'), L('4'), L('1'), L('8'), L('1'), L('5'),
|
|
L('9'), L('8'), L('1'), L('3'), L('6'), L('2'), L('9'), L('7'),
|
|
L('7'), L('4'), M(117, 4), L('0'), L('9'), L('9'), L('6'), L('0'),
|
|
L('5'), L('1'), L('8'), L('7'), L('0'), L('7'), L('2'), L('1'),
|
|
L('1'), L('3'), L('4'), L('9'), M(1, 5), L('8'), L('3'), L('7'),
|
|
L('2'), L('9'), L('7'), L('8'), L('0'), L('4'), L('9'), L('9'),
|
|
M(731, 4), L('9'), L('7'), L('3'), L('1'), L('7'), L('3'), L('2'),
|
|
L('8'), M(395, 4), L('6'), L('3'), L('1'), L('8'), L('5'), M(770, 4),
|
|
M(745, 4), L('4'), L('5'), L('5'), L('3'), L('4'), L('6'), L('9'),
|
|
L('0'), L('8'), L('3'), L('0'), L('2'), L('6'), L('4'), L('2'),
|
|
L('5'), L('2'), L('2'), L('3'), L('0'), M(740, 4), M(616, 4), L('8'),
|
|
L('5'), L('0'), L('3'), L('5'), L('2'), L('6'), L('1'), L('9'),
|
|
L('3'), L('1'), L('1'), M(531, 4), L('1'), L('0'), L('1'), L('0'),
|
|
L('0'), L('0'), L('3'), L('1'), L('3'), L('7'), L('8'), L('3'),
|
|
L('8'), L('7'), L('5'), L('2'), L('8'), L('8'), L('6'), L('5'),
|
|
L('8'), L('7'), L('5'), L('3'), L('3'), L('2'), L('0'), L('8'),
|
|
L('3'), L('8'), L('1'), L('4'), L('2'), L('0'), L('6'), M(321, 4),
|
|
M(300, 4), L('1'), L('4'), L('7'), L('3'), L('0'), L('3'), L('5'),
|
|
L('9'), M(815, 5), L('9'), L('0'), L('4'), L('2'), L('8'), L('7'),
|
|
L('5'), L('5'), L('4'), L('6'), L('8'), L('7'), L('3'), L('1'),
|
|
L('1'), L('5'), L('9'), L('5'), M(854, 4), L('3'), L('8'), L('8'),
|
|
L('2'), L('3'), L('5'), L('3'), L('7'), L('8'), L('7'), L('5'),
|
|
M(896, 5), L('9'), M(315, 4), L('1'), M(329, 4), L('8'), L('0'), L('5'),
|
|
L('3'), M(395, 4), L('2'), L('2'), L('6'), L('8'), L('0'), L('6'),
|
|
L('6'), L('1'), L('3'), L('0'), L('0'), L('1'), L('9'), L('2'),
|
|
L('7'), L('8'), L('7'), L('6'), L('6'), L('1'), L('1'), L('1'),
|
|
L('9'), L('5'), L('9'), M(568, 4), L('6'), M(293, 5), L('8'), L('9'),
|
|
L('3'), L('8'), L('0'), L('9'), L('5'), L('2'), L('5'), L('7'),
|
|
L('2'), L('0'), L('1'), L('0'), L('6'), L('5'), L('4'), L('8'),
|
|
L('5'), L('8'), L('6'), L('3'), L('2'), L('7'), M(155, 4), L('9'),
|
|
L('3'), L('6'), L('1'), L('5'), L('3'), M(545, 4), M(349, 5), L('2'),
|
|
L('3'), L('0'), L('3'), L('0'), L('1'), L('9'), L('5'), L('2'),
|
|
L('0'), L('3'), L('5'), L('3'), L('0'), L('1'), L('8'), L('5'),
|
|
L('2'), M(370, 4), M(118, 4), L('3'), L('6'), L('2'), L('2'), L('5'),
|
|
L('9'), L('9'), L('4'), L('1'), L('3'), M(597, 4), L('4'), L('9'),
|
|
L('7'), L('2'), L('1'), L('7'), M(223, 4), L('3'), L('4'), L('7'),
|
|
L('9'), L('1'), L('3'), L('1'), L('5'), L('1'), L('5'), L('5'),
|
|
L('7'), L('4'), L('8'), L('5'), L('7'), L('2'), L('4'), L('2'),
|
|
L('4'), L('5'), L('4'), L('1'), L('5'), L('0'), L('6'), L('9'),
|
|
M(320, 4), L('8'), L('2'), L('9'), L('5'), L('3'), L('3'), L('1'),
|
|
L('1'), L('6'), L('8'), L('6'), L('1'), L('7'), L('2'), L('7'),
|
|
L('8'), M(824, 4), L('9'), L('0'), L('7'), L('5'), L('0'), L('9'),
|
|
M(270, 4), L('7'), L('5'), L('4'), L('6'), L('3'), L('7'), L('4'),
|
|
L('6'), L('4'), L('9'), L('3'), L('9'), L('3'), L('1'), L('9'),
|
|
L('2'), L('5'), L('5'), L('0'), L('6'), L('0'), L('4'), L('0'),
|
|
L('0'), L('9'), M(620, 4), L('1'), L('6'), L('7'), L('1'), L('1'),
|
|
L('3'), L('9'), L('0'), L('0'), L('9'), L('8'), M(822, 4), L('4'),
|
|
L('0'), L('1'), L('2'), L('8'), L('5'), L('8'), L('3'), L('6'),
|
|
L('1'), L('6'), L('0'), L('3'), L('5'), L('6'), L('3'), L('7'),
|
|
L('0'), L('7'), L('6'), L('6'), L('0'), L('1'), L('0'), L('4'),
|
|
M(371, 4), L('8'), L('1'), L('9'), L('4'), L('2'), L('9'), M(1055, 5),
|
|
M(240, 4), M(652, 4), L('7'), L('8'), L('3'), L('7'), L('4'), M(1193, 4),
|
|
L('8'), L('2'), L('5'), L('5'), L('3'), L('7'), M(522, 5), L('2'),
|
|
L('6'), L('8'), M(47, 4), L('4'), L('0'), L('4'), L('7'), M(466, 4),
|
|
L('4'), M(1206, 4), M(910, 4), L('8'), L('4'), M(937, 4), L('6'), M(800, 6),
|
|
L('3'), L('3'), L('1'), L('3'), L('6'), L('7'), L('7'), L('0'),
|
|
L('2'), L('8'), L('9'), L('8'), L('9'), L('1'), L('5'), L('2'),
|
|
M(99, 4), L('5'), L('2'), L('1'), L('6'), L('2'), L('0'), L('5'),
|
|
L('6'), L('9'), L('6'), M(1042, 4), L('0'), L('5'), L('8'), M(1144, 4),
|
|
L('5'), M(1177, 4), L('5'), L('1'), L('1'), M(522, 4), L('8'), L('2'),
|
|
L('4'), L('3'), L('0'), L('0'), L('3'), L('5'), L('5'), L('8'),
|
|
L('7'), L('6'), L('4'), L('0'), L('2'), L('4'), L('7'), L('4'),
|
|
L('9'), L('6'), L('4'), L('7'), L('3'), L('2'), L('6'), L('3'),
|
|
M(1087, 4), L('9'), L('9'), L('2'), M(1100, 4), L('4'), L('2'), L('6'),
|
|
L('9'), M(710, 6), L('7'), M(471, 4), L('4'), M(1342, 4), M(1054, 4), L('9'),
|
|
L('3'), L('4'), L('1'), L('7'), M(430, 4), L('1'), L('2'), M(43, 4),
|
|
L('4'), M(415, 4), L('1'), L('5'), L('0'), L('3'), L('0'), L('2'),
|
|
L('8'), L('6'), L('1'), L('8'), L('2'), L('9'), L('7'), L('4'),
|
|
L('5'), L('5'), L('5'), L('7'), L('0'), L('6'), L('7'), L('4'),
|
|
M(310, 4), L('5'), L('0'), L('5'), L('4'), L('9'), L('4'), L('5'),
|
|
L('8'), M(454, 4), L('9'), M(82, 4), L('5'), L('6'), M(493, 4), L('7'),
|
|
L('2'), L('1'), L('0'), L('7'), L('9'), M(346, 4), L('3'), L('0'),
|
|
M(267, 4), L('3'), L('2'), L('1'), L('1'), L('6'), L('5'), L('3'),
|
|
L('4'), L('4'), L('9'), L('8'), L('7'), L('2'), L('0'), L('2'),
|
|
L('7'), M(284, 4), L('0'), L('2'), L('3'), L('6'), L('4'), M(559, 4),
|
|
L('5'), L('4'), L('9'), L('9'), L('1'), L('1'), L('9'), L('8'),
|
|
M(1049, 4), L('4'), M(284, 4), L('5'), L('3'), L('5'), L('6'), L('6'),
|
|
L('3'), L('6'), L('9'), M(1105, 4), L('2'), L('6'), L('5'), M(741, 4),
|
|
L('7'), L('8'), L('6'), L('2'), L('5'), L('5'), L('1'), M(987, 4),
|
|
L('1'), L('7'), L('5'), L('7'), L('4'), L('6'), L('7'), L('2'),
|
|
L('8'), L('9'), L('0'), L('9'), L('7'), L('7'), L('7'), L('7'),
|
|
M(1108, 5), L('0'), L('0'), L('0'), M(1534, 4), L('7'), L('0'), M(1248, 4),
|
|
L('6'), M(1002, 4), L('4'), L('9'), L('1'), M(1055, 4), M(664, 4), L('2'),
|
|
L('1'), L('4'), L('7'), L('7'), L('2'), L('3'), L('5'), L('0'),
|
|
L('1'), L('4'), L('1'), L('4'), M(1604, 4), L('3'), L('5'), L('6'),
|
|
M(1200, 4), L('1'), L('6'), L('1'), L('3'), L('6'), L('1'), L('1'),
|
|
L('5'), L('7'), L('3'), L('5'), L('2'), L('5'), M(1285, 4), L('3'),
|
|
L('4'), M(92, 4), L('1'), L('8'), M(1148, 4), L('8'), L('4'), M(1512, 4),
|
|
L('3'), L('3'), L('2'), L('3'), L('9'), L('0'), L('7'), L('3'),
|
|
L('9'), L('4'), L('1'), L('4'), L('3'), L('3'), L('3'), L('4'),
|
|
L('5'), L('4'), L('7'), L('7'), L('6'), L('2'), L('4'), M(579, 4),
|
|
L('2'), L('5'), L('1'), L('8'), L('9'), L('8'), L('3'), L('5'),
|
|
L('6'), L('9'), L('4'), L('8'), L('5'), L('5'), L('6'), L('2'),
|
|
L('0'), L('9'), L('9'), L('2'), L('1'), L('9'), L('2'), L('2'),
|
|
L('2'), L('1'), L('8'), L('4'), L('2'), L('7'), M(575, 4), L('2'),
|
|
M(187, 4), L('6'), L('8'), L('8'), L('7'), L('6'), L('7'), L('1'),
|
|
L('7'), L('9'), L('0'), M(86, 4), L('0'), M(263, 5), L('6'), L('6'),
|
|
M(1000, 4), L('8'), L('8'), L('6'), L('2'), L('7'), L('2'), M(1757, 4),
|
|
L('1'), L('7'), L('8'), L('6'), L('0'), L('8'), L('5'), L('7'),
|
|
M(116, 4), L('3'), M(765, 5), L('7'), L('9'), L('7'), L('6'), L('6'),
|
|
L('8'), L('1'), M(702, 4), L('0'), L('0'), L('9'), L('5'), L('3'),
|
|
L('8'), L('8'), M(1593, 4), L('3'), M(1702, 4), L('0'), L('6'), L('8'),
|
|
L('0'), L('0'), L('6'), L('4'), L('2'), L('2'), L('5'), L('1'),
|
|
L('2'), L('5'), L('2'), M(1404, 4), L('7'), L('3'), L('9'), L('2'),
|
|
M(664, 4), M(1141, 4), L('4'), M(1716, 5), L('8'), L('6'), L('2'), L('6'),
|
|
L('9'), L('4'), L('5'), M(486, 4), L('4'), L('1'), L('9'), L('6'),
|
|
L('5'), L('2'), L('8'), L('5'), L('0'), M(154, 4), M(925, 4), L('1'),
|
|
L('8'), L('6'), L('3'), M(447, 4), L('4'), M(341, 5), L('2'), L('0'),
|
|
L('3'), L('9'), M(1420, 4), L('4'), L('5'), M(701, 4), L('2'), L('3'),
|
|
L('7'), M(1069, 4), L('6'), M(1297, 4), L('5'), L('6'), M(1593, 4), L('7'),
|
|
L('1'), L('9'), L('1'), L('7'), L('2'), L('8'), M(370, 4), L('7'),
|
|
L('6'), L('4'), L('6'), L('5'), L('7'), L('5'), L('7'), L('3'),
|
|
L('9'), M(258, 4), L('3'), L('8'), L('9'), M(1865, 4), L('8'), L('3'),
|
|
L('2'), L('6'), L('4'), L('5'), L('9'), L('9'), L('5'), L('8'),
|
|
M(1704, 4), L('0'), L('4'), L('7'), L('8'), M(479, 4), M(809, 4), L('9'),
|
|
M(46, 4), L('6'), L('4'), L('0'), L('7'), L('8'), L('9'), L('5'),
|
|
L('1'), M(143, 4), L('6'), L('8'), L('3'), M(304, 4), L('2'), L('5'),
|
|
L('9'), L('5'), L('7'), L('0'), M(1129, 4), L('8'), L('2'), L('2'),
|
|
M(713, 4), L('2'), M(1564, 4), L('4'), L('0'), L('7'), L('7'), L('2'),
|
|
L('6'), L('7'), L('1'), L('9'), L('4'), L('7'), L('8'), M(794, 4),
|
|
L('8'), L('2'), L('6'), L('0'), L('1'), L('4'), L('7'), L('6'),
|
|
L('9'), L('9'), L('0'), L('9'), M(1257, 4), L('0'), L('1'), L('3'),
|
|
L('6'), L('3'), L('9'), L('4'), L('4'), L('3'), M(640, 4), L('3'),
|
|
L('0'), M(262, 4), L('2'), L('0'), L('3'), L('4'), L('9'), L('6'),
|
|
L('2'), L('5'), L('2'), L('4'), L('5'), L('1'), L('7'), M(950, 4),
|
|
L('9'), L('6'), L('5'), L('1'), L('4'), L('3'), L('1'), L('4'),
|
|
L('2'), L('9'), L('8'), L('0'), L('9'), L('1'), L('9'), L('0'),
|
|
L('6'), L('5'), L('9'), L('2'), M(643, 4), L('7'), L('2'), L('2'),
|
|
L('1'), L('6'), L('9'), L('6'), L('4'), L('6'), M(1050, 4), M(123, 4),
|
|
L('5'), M(1295, 4), L('4'), M(1382, 5), L('8'), M(1370, 4), L('9'), L('7'),
|
|
M(1404, 4), L('5'), L('4'), M(1182, 4), M(575, 4), L('7'), M(1627, 4), L('8'),
|
|
L('4'), L('6'), L('8'), L('1'), L('3'), M(141, 4), L('6'), L('8'),
|
|
L('3'), L('8'), L('6'), L('8'), L('9'), L('4'), L('2'), L('7'),
|
|
L('7'), L('4'), L('1'), L('5'), L('5'), L('9'), L('9'), L('1'),
|
|
L('8'), L('5'), M(91, 4), L('2'), L('4'), L('5'), L('9'), L('5'),
|
|
L('3'), L('9'), L('5'), L('9'), L('4'), L('3'), L('1'), M(1464, 4),
|
|
L('7'), M(19, 4), L('6'), L('8'), L('0'), L('8'), L('4'), L('5'),
|
|
M(744, 4), L('7'), L('3'), M(2079, 4), L('9'), L('5'), L('8'), L('4'),
|
|
L('8'), L('6'), L('5'), L('3'), L('8'), M(1769, 4), L('6'), L('2'),
|
|
M(243, 4), L('6'), L('0'), L('9'), M(1207, 4), L('6'), L('0'), L('8'),
|
|
L('0'), L('5'), L('1'), L('2'), L('4'), L('3'), L('8'), L('8'),
|
|
L('4'), M(315, 4), M(12, 4), L('4'), L('1'), L('3'), M(784, 4), L('7'),
|
|
L('6'), L('2'), L('7'), L('8'), M(834, 4), L('7'), L('1'), L('5'),
|
|
M(1436, 4), L('3'), L('5'), L('9'), L('9'), L('7'), L('7'), L('0'),
|
|
L('0'), L('1'), L('2'), L('9'), M(1139, 4), L('8'), L('9'), L('4'),
|
|
L('4'), L('1'), M(632, 4), L('6'), L('8'), L('5'), L('5'), M(96, 4),
|
|
L('4'), L('0'), L('6'), L('3'), M(2279, 4), L('2'), L('0'), L('7'),
|
|
L('2'), L('2'), M(345, 4), M(516, 5), L('4'), L('8'), L('1'), L('5'),
|
|
L('8'), M(518, 4), M(511, 4), M(635, 4), M(665, 4), L('3'), L('9'), L('4'),
|
|
L('5'), L('2'), L('2'), L('6'), L('7'), M(1175, 6), L('8'), M(1419, 4),
|
|
L('2'), L('1'), M(747, 4), L('2'), M(904, 4), L('5'), L('4'), L('6'),
|
|
L('6'), L('6'), M(1308, 4), L('2'), L('3'), L('9'), L('8'), L('6'),
|
|
L('4'), L('5'), L('6'), M(1221, 4), L('1'), L('6'), L('3'), L('5'),
|
|
M(596, 5), M(2066, 4), L('7'), M(2222, 4), L('9'), L('8'), M(1119, 4), L('9'),
|
|
L('3'), L('6'), L('3'), L('4'), M(1884, 4), L('7'), L('4'), L('3'),
|
|
L('2'), L('4'), M(1148, 4), L('1'), L('5'), L('0'), L('7'), L('6'),
|
|
M(1212, 4), L('7'), L('9'), L('4'), L('5'), L('1'), L('0'), L('9'),
|
|
M(63, 4), L('0'), L('9'), L('4'), L('0'), M(1703, 4), L('8'), L('8'),
|
|
L('7'), L('9'), L('7'), L('1'), L('0'), L('8'), L('9'), L('3'),
|
|
M(2289, 4), L('6'), L('9'), L('1'), L('3'), L('6'), L('8'), L('6'),
|
|
L('7'), L('2'), M(604, 4), M(511, 4), L('5'), M(1344, 4), M(1129, 4), M(2050, 4),
|
|
L('1'), L('7'), L('9'), L('2'), L('8'), L('6'), L('8'), M(2253, 4),
|
|
L('8'), L('7'), L('4'), L('7'), M(1951, 5), L('8'), L('2'), L('4'),
|
|
M(2427, 4), L('8'), M(604, 4), L('7'), L('1'), L('4'), L('9'), L('0'),
|
|
L('9'), L('6'), L('7'), L('5'), L('9'), L('8'), M(1776, 4), L('3'),
|
|
L('6'), L('5'), M(309, 4), L('8'), L('1'), M(93, 4), M(1862, 4), M(2359, 4),
|
|
L('6'), L('8'), L('2'), L('9'), M(1407, 4), L('8'), L('7'), L('2'),
|
|
L('2'), L('6'), L('5'), L('8'), L('8'), L('0'), M(1554, 4), L('5'),
|
|
M(586, 4), L('4'), L('2'), L('7'), L('0'), L('4'), L('7'), L('7'),
|
|
L('5'), L('5'), M(2079, 4), L('3'), L('7'), L('9'), L('6'), L('4'),
|
|
L('1'), L('4'), L('5'), L('1'), L('5'), L('2'), M(1534, 4), L('2'),
|
|
L('3'), L('4'), L('3'), L('6'), L('4'), L('5'), L('4'), M(1503, 4),
|
|
L('4'), L('4'), L('4'), L('7'), L('9'), L('5'), M(61, 4), M(1316, 4),
|
|
M(2279, 5), L('4'), L('1'), M(1323, 4), L('3'), M(773, 4), L('5'), L('2'),
|
|
L('3'), L('1'), M(2114, 5), L('1'), L('6'), L('6'), L('1'), M(2227, 4),
|
|
L('5'), L('9'), L('6'), L('9'), L('5'), L('3'), L('6'), L('2'),
|
|
L('3'), L('1'), L('4'), M(1536, 4), L('2'), L('4'), L('8'), L('4'),
|
|
L('9'), L('3'), L('7'), L('1'), L('8'), L('7'), L('1'), L('1'),
|
|
L('0'), L('1'), L('4'), L('5'), L('7'), L('6'), L('5'), L('4'),
|
|
M(1890, 4), L('0'), L('2'), L('7'), L('9'), L('9'), L('3'), L('4'),
|
|
L('4'), L('0'), L('3'), L('7'), L('4'), L('2'), L('0'), L('0'),
|
|
L('7'), M(2368, 4), L('7'), L('8'), L('5'), L('3'), L('9'), L('0'),
|
|
L('6'), L('2'), L('1'), L('9'), M(666, 5), M(838, 4), L('8'), L('4'),
|
|
L('7'), M(979, 5), L('8'), L('3'), L('3'), L('2'), L('1'), L('4'),
|
|
L('4'), L('5'), L('7'), L('1'), M(645, 4), M(1911, 4), L('4'), L('3'),
|
|
L('5'), L('0'), M(2345, 4), M(1129, 4), L('5'), L('3'), L('1'), L('9'),
|
|
L('1'), L('0'), L('4'), L('8'), L('4'), L('8'), L('1'), L('0'),
|
|
L('0'), L('5'), L('3'), L('7'), L('0'), L('6'), M(2237, 4), M(1438, 5),
|
|
M(1922, 5), L('1'), M(1370, 4), L('7'), M(796, 4), L('5'), M(2029, 4), M(1037, 4),
|
|
L('6'), L('3'), M(2013, 5), L('4'), M(2418, 4), M(847, 5), M(1014, 5), L('8'),
|
|
M(1326, 5), M(2184, 5), L('9'), M(392, 4), L('9'), L('1'), M(2255, 4), L('8'),
|
|
L('1'), L('4'), L('6'), L('7'), L('5'), L('1'), M(1580, 4), L('1'),
|
|
L('2'), L('3'), L('9'), M(426, 6), L('9'), L('0'), L('7'), L('1'),
|
|
L('8'), L('6'), L('4'), L('9'), L('4'), L('2'), L('3'), L('1'),
|
|
L('9'), L('6'), L('1'), L('5'), L('6'), M(493, 4), M(1725, 4), L('9'),
|
|
L('5'), M(2343, 4), M(1130, 4), M(284, 4), L('6'), L('0'), L('3'), L('8'),
|
|
M(2598, 4), M(368, 4), M(901, 4), L('6'), L('2'), M(1115, 4), L('5'), M(2125, 4),
|
|
L('6'), L('3'), L('8'), L('9'), L('3'), L('7'), L('7'), L('8'),
|
|
L('7'), M(2246, 4), M(249, 4), L('9'), L('7'), L('9'), L('2'), L('0'),
|
|
L('7'), L('7'), L('3'), M(1496, 4), L('2'), L('1'), L('8'), L('2'),
|
|
L('5'), L('6'), M(2016, 4), L('6'), L('6'), M(1751, 4), L('4'), L('2'),
|
|
M(1663, 5), L('6'), M(1767, 4), L('4'), L('4'), M(37, 4), L('5'), L('4'),
|
|
L('9'), L('2'), L('0'), L('2'), L('6'), L('0'), L('5'), M(2740, 4),
|
|
M(997, 5), L('2'), L('0'), L('1'), L('4'), L('9'), M(1235, 4), L('8'),
|
|
L('5'), L('0'), L('7'), L('3'), M(1434, 4), L('6'), L('6'), L('6'),
|
|
L('0'), M(405, 4), L('2'), L('4'), L('3'), L('4'), L('0'), M(136, 4),
|
|
L('0'), M(1900, 4), L('8'), L('6'), L('3'), M(2391, 4), M(2021, 4), M(1068, 4),
|
|
M(373, 4), L('5'), L('7'), L('9'), L('6'), L('2'), L('6'), L('8'),
|
|
L('5'), L('6'), M(321, 4), L('5'), L('0'), L('8'), M(1316, 4), L('5'),
|
|
L('8'), L('7'), L('9'), L('6'), L('9'), L('9'), M(1810, 4), L('5'),
|
|
L('7'), L('4'), M(2585, 4), L('8'), L('4'), L('0'), M(2228, 4), L('1'),
|
|
L('4'), L('5'), L('9'), L('1'), M(1933, 4), L('7'), L('0'), M(565, 4),
|
|
L('0'), L('1'), M(3048, 4), L('1'), L('2'), M(3189, 4), L('0'), M(964, 4),
|
|
L('3'), L('9'), M(2859, 4), M(275, 4), L('7'), L('1'), L('5'), M(945, 4),
|
|
L('4'), L('2'), L('0'), M(3059, 5), L('9'), M(3011, 4), L('0'), L('7'),
|
|
M(834, 4), M(1942, 4), M(2736, 4), M(3171, 4), L('2'), L('1'), M(2401, 4), L('2'),
|
|
L('5'), L('1'), M(1404, 4), M(2373, 4), L('9'), L('2'), M(435, 4), L('8'),
|
|
L('2'), L('6'), M(2919, 4), L('2'), M(633, 4), L('3'), L('2'), L('1'),
|
|
L('5'), L('7'), L('9'), L('1'), L('9'), L('8'), L('4'), L('1'),
|
|
L('4'), M(2172, 5), L('9'), L('1'), L('6'), L('4'), M(1769, 5), L('9'),
|
|
M(2905, 5), M(2268, 4), L('7'), L('2'), L('2'), M(802, 4), L('5'), M(2213, 4),
|
|
M(322, 4), L('9'), L('1'), L('0'), M(189, 4), M(3164, 4), L('5'), L('2'),
|
|
L('8'), L('0'), L('1'), L('7'), M(562, 4), L('7'), L('1'), L('2'),
|
|
M(2325, 4), L('8'), L('3'), L('2'), M(884, 4), L('1'), M(1418, 4), L('0'),
|
|
L('9'), L('3'), L('5'), L('3'), L('9'), L('6'), L('5'), L('7'),
|
|
M(1612, 4), L('1'), L('0'), L('8'), L('3'), M(106, 4), L('5'), L('1'),
|
|
M(1915, 4), M(3419, 4), L('1'), L('4'), L('4'), L('4'), L('2'), L('1'),
|
|
L('0'), L('0'), M(515, 4), L('0'), L('3'), M(413, 4), L('1'), L('1'),
|
|
L('0'), L('3'), M(3202, 4), M(10, 4), M(39, 4), M(1539, 6), L('5'), L('1'),
|
|
L('6'), M(1498, 4), M(2180, 5), M(2347, 4), L('5'), M(3139, 5), L('8'), L('5'),
|
|
L('1'), L('7'), L('1'), L('4'), L('3'), L('7'), M(1542, 4), M(110, 4),
|
|
L('1'), L('5'), L('5'), L('6'), L('5'), L('0'), L('8'), L('8'),
|
|
M(954, 4), L('9'), L('8'), L('9'), L('8'), L('5'), L('9'), L('9'),
|
|
L('8'), L('2'), L('3'), L('8'), M(464, 4), M(2491, 4), L('3'), M(365, 4),
|
|
M(1087, 4), M(2500, 4), L('8'), M(3590, 5), L('3'), L('2'), M(264, 4), L('5'),
|
|
M(774, 4), L('3'), M(459, 4), L('9'), M(1052, 4), L('9'), L('8'), M(2174, 4),
|
|
L('4'), M(3257, 4), L('7'), M(1612, 4), L('0'), L('7'), M(230, 4), L('4'),
|
|
L('8'), L('1'), L('4'), L('1'), M(1338, 4), L('8'), L('5'), L('9'),
|
|
L('4'), L('6'), L('1'), M(3018, 4), L('8'), L('0'),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-rand-1k.input",
|
|
.want = "huffman-rand-1k.{s}.expect",
|
|
.want_no_input = "huffman-rand-1k.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L(0xf8), L(0x8b), L(0x96), L(0x76), L(0x48), L(0xd), L(0x85), L(0x94), L(0x25), L(0x80), L(0xaf), L(0xc2), L(0xfe), L(0x8d),
|
|
L(0xe8), L(0x20), L(0xeb), L(0x17), L(0x86), L(0xc9), L(0xb7), L(0xc5), L(0xde), L(0x6), L(0xea), L(0x7d), L(0x18), L(0x8b),
|
|
L(0xe7), L(0x3e), L(0x7), L(0xda), L(0xdf), L(0xff), L(0x6c), L(0x73), L(0xde), L(0xcc), L(0xe7), L(0x6d), L(0x8d), L(0x4),
|
|
L(0x19), L(0x49), L(0x7f), L(0x47), L(0x1f), L(0x48), L(0x15), L(0xb0), L(0xe8), L(0x9e), L(0xf2), L(0x31), L(0x59), L(0xde),
|
|
L(0x34), L(0xb4), L(0x5b), L(0xe5), L(0xe0), L(0x9), L(0x11), L(0x30), L(0xc2), L(0x88), L(0x5b), L(0x7c), L(0x5d), L(0x14),
|
|
L(0x13), L(0x6f), L(0x23), L(0xa9), L(0xd), L(0xbc), L(0x2d), L(0x23), L(0xbe), L(0xd9), L(0xed), L(0x75), L(0x4), L(0x6c),
|
|
L(0x99), L(0xdf), L(0xfd), L(0x70), L(0x66), L(0xe6), L(0xee), L(0xd9), L(0xb1), L(0x9e), L(0x6e), L(0x83), L(0x59), L(0xd5),
|
|
L(0xd4), L(0x80), L(0x59), L(0x98), L(0x77), L(0x89), L(0x43), L(0x38), L(0xc9), L(0xaf), L(0x30), L(0x32), L(0x9a), L(0x20),
|
|
L(0x1b), L(0x46), L(0x3d), L(0x67), L(0x6e), L(0xd7), L(0x72), L(0x9e), L(0x4e), L(0x21), L(0x4f), L(0xc6), L(0xe0), L(0xd4),
|
|
L(0x7b), L(0x4), L(0x8d), L(0xa5), L(0x3), L(0xf6), L(0x5), L(0x9b), L(0x6b), L(0xdc), L(0x2a), L(0x93), L(0x77), L(0x28),
|
|
L(0xfd), L(0xb4), L(0x62), L(0xda), L(0x20), L(0xe7), L(0x1f), L(0xab), L(0x6b), L(0x51), L(0x43), L(0x39), L(0x2f), L(0xa0),
|
|
L(0x92), L(0x1), L(0x6c), L(0x75), L(0x3e), L(0xf4), L(0x35), L(0xfd), L(0x43), L(0x2e), L(0xf7), L(0xa4), L(0x75), L(0xda),
|
|
L(0xea), L(0x9b), L(0xa), L(0x64), L(0xb), L(0xe0), L(0x23), L(0x29), L(0xbd), L(0xf7), L(0xe7), L(0x83), L(0x3c), L(0xfb),
|
|
L(0xdf), L(0xb3), L(0xae), L(0x4f), L(0xa4), L(0x47), L(0x55), L(0x99), L(0xde), L(0x2f), L(0x96), L(0x6e), L(0x1c), L(0x43),
|
|
L(0x4c), L(0x87), L(0xe2), L(0x7c), L(0xd9), L(0x5f), L(0x4c), L(0x7c), L(0xe8), L(0x90), L(0x3), L(0xdb), L(0x30), L(0x95),
|
|
L(0xd6), L(0x22), L(0xc), L(0x47), L(0xb8), L(0x4d), L(0x6b), L(0xbd), L(0x24), L(0x11), L(0xab), L(0x2c), L(0xd7), L(0xbe),
|
|
L(0x6e), L(0x7a), L(0xd6), L(0x8), L(0xa3), L(0x98), L(0xd8), L(0xdd), L(0x15), L(0x6a), L(0xfa), L(0x93), L(0x30), L(0x1),
|
|
L(0x25), L(0x1d), L(0xa2), L(0x74), L(0x86), L(0x4b), L(0x6a), L(0x95), L(0xe8), L(0xe1), L(0x4e), L(0xe), L(0x76), L(0xb9),
|
|
L(0x49), L(0xa9), L(0x5f), L(0xa0), L(0xa6), L(0x63), L(0x3c), L(0x7e), L(0x7e), L(0x20), L(0x13), L(0x4f), L(0xbb), L(0x66),
|
|
L(0x92), L(0xb8), L(0x2e), L(0xa4), L(0xfa), L(0x48), L(0xcb), L(0xae), L(0xb9), L(0x3c), L(0xaf), L(0xd3), L(0x1f), L(0xe1),
|
|
L(0xd5), L(0x8d), L(0x42), L(0x6d), L(0xf0), L(0xfc), L(0x8c), L(0xc), L(0x0), L(0xde), L(0x40), L(0xab), L(0x8b), L(0x47),
|
|
L(0x97), L(0x4e), L(0xa8), L(0xcf), L(0x8e), L(0xdb), L(0xa6), L(0x8b), L(0x20), L(0x9), L(0x84), L(0x7a), L(0x66), L(0xe5),
|
|
L(0x98), L(0x29), L(0x2), L(0x95), L(0xe6), L(0x38), L(0x32), L(0x60), L(0x3), L(0xe3), L(0x9a), L(0x1e), L(0x54), L(0xe8),
|
|
L(0x63), L(0x80), L(0x48), L(0x9c), L(0xe7), L(0x63), L(0x33), L(0x6e), L(0xa0), L(0x65), L(0x83), L(0xfa), L(0xc6), L(0xba),
|
|
L(0x7a), L(0x43), L(0x71), L(0x5), L(0xf5), L(0x68), L(0x69), L(0x85), L(0x9c), L(0xba), L(0x45), L(0xcd), L(0x6b), L(0xb),
|
|
L(0x19), L(0xd1), L(0xbb), L(0x7f), L(0x70), L(0x85), L(0x92), L(0xd1), L(0xb4), L(0x64), L(0x82), L(0xb1), L(0xe4), L(0x62),
|
|
L(0xc5), L(0x3c), L(0x46), L(0x1f), L(0x92), L(0x31), L(0x1c), L(0x4e), L(0x41), L(0x77), L(0xf7), L(0xe7), L(0x87), L(0xa2),
|
|
L(0xf), L(0x6e), L(0xe8), L(0x92), L(0x3), L(0x6b), L(0xa), L(0xe7), L(0xa9), L(0x3b), L(0x11), L(0xda), L(0x66), L(0x8a),
|
|
L(0x29), L(0xda), L(0x79), L(0xe1), L(0x64), L(0x8d), L(0xe3), L(0x54), L(0xd4), L(0xf5), L(0xef), L(0x64), L(0x87), L(0x3b),
|
|
L(0xf4), L(0xc2), L(0xf4), L(0x71), L(0x13), L(0xa9), L(0xe9), L(0xe0), L(0xa2), L(0x6), L(0x14), L(0xab), L(0x5d), L(0xa7),
|
|
L(0x96), L(0x0), L(0xd6), L(0xc3), L(0xcc), L(0x57), L(0xed), L(0x39), L(0x6a), L(0x25), L(0xcd), L(0x76), L(0xea), L(0xba),
|
|
L(0x3a), L(0xf2), L(0xa1), L(0x95), L(0x5d), L(0xe5), L(0x71), L(0xcf), L(0x9c), L(0x62), L(0x9e), L(0x6a), L(0xfa), L(0xd5),
|
|
L(0x31), L(0xd1), L(0xa8), L(0x66), L(0x30), L(0x33), L(0xaa), L(0x51), L(0x17), L(0x13), L(0x82), L(0x99), L(0xc8), L(0x14),
|
|
L(0x60), L(0x9f), L(0x4d), L(0x32), L(0x6d), L(0xda), L(0x19), L(0x26), L(0x21), L(0xdc), L(0x7e), L(0x2e), L(0x25), L(0x67),
|
|
L(0x72), L(0xca), L(0xf), L(0x92), L(0xcd), L(0xf6), L(0xd6), L(0xcb), L(0x97), L(0x8a), L(0x33), L(0x58), L(0x73), L(0x70),
|
|
L(0x91), L(0x1d), L(0xbf), L(0x28), L(0x23), L(0xa3), L(0xc), L(0xf1), L(0x83), L(0xc3), L(0xc8), L(0x56), L(0x77), L(0x68),
|
|
L(0xe3), L(0x82), L(0xba), L(0xb9), L(0x57), L(0x56), L(0x57), L(0x9c), L(0xc3), L(0xd6), L(0x14), L(0x5), L(0x3c), L(0xb1),
|
|
L(0xaf), L(0x93), L(0xc8), L(0x8a), L(0x57), L(0x7f), L(0x53), L(0xfa), L(0x2f), L(0xaa), L(0x6e), L(0x66), L(0x83), L(0xfa),
|
|
L(0x33), L(0xd1), L(0x21), L(0xab), L(0x1b), L(0x71), L(0xb4), L(0x7c), L(0xda), L(0xfd), L(0xfb), L(0x7f), L(0x20), L(0xab),
|
|
L(0x5e), L(0xd5), L(0xca), L(0xfd), L(0xdd), L(0xe0), L(0xee), L(0xda), L(0xba), L(0xa8), L(0x27), L(0x99), L(0x97), L(0x69),
|
|
L(0xc1), L(0x3c), L(0x82), L(0x8c), L(0xa), L(0x5c), L(0x2d), L(0x5b), L(0x88), L(0x3e), L(0x34), L(0x35), L(0x86), L(0x37),
|
|
L(0x46), L(0x79), L(0xe1), L(0xaa), L(0x19), L(0xfb), L(0xaa), L(0xde), L(0x15), L(0x9), L(0xd), L(0x1a), L(0x57), L(0xff),
|
|
L(0xb5), L(0xf), L(0xf3), L(0x2b), L(0x5a), L(0x6a), L(0x4d), L(0x19), L(0x77), L(0x71), L(0x45), L(0xdf), L(0x4f), L(0xb3),
|
|
L(0xec), L(0xf1), L(0xeb), L(0x18), L(0x53), L(0x3e), L(0x3b), L(0x47), L(0x8), L(0x9a), L(0x73), L(0xa0), L(0x5c), L(0x8c),
|
|
L(0x5f), L(0xeb), L(0xf), L(0x3a), L(0xc2), L(0x43), L(0x67), L(0xb4), L(0x66), L(0x67), L(0x80), L(0x58), L(0xe), L(0xc1),
|
|
L(0xec), L(0x40), L(0xd4), L(0x22), L(0x94), L(0xca), L(0xf9), L(0xe8), L(0x92), L(0xe4), L(0x69), L(0x38), L(0xbe), L(0x67),
|
|
L(0x64), L(0xca), L(0x50), L(0xc7), L(0x6), L(0x67), L(0x42), L(0x6e), L(0xa3), L(0xf0), L(0xb7), L(0x6c), L(0xf2), L(0xe8),
|
|
L(0x5f), L(0xb1), L(0xaf), L(0xe7), L(0xdb), L(0xbb), L(0x77), L(0xb5), L(0xf8), L(0xcb), L(0x8), L(0xc4), L(0x75), L(0x7e),
|
|
L(0xc0), L(0xf9), L(0x1c), L(0x7f), L(0x3c), L(0x89), L(0x2f), L(0xd2), L(0x58), L(0x3a), L(0xe2), L(0xf8), L(0x91), L(0xb6),
|
|
L(0x7b), L(0x24), L(0x27), L(0xe9), L(0xae), L(0x84), L(0x8b), L(0xde), L(0x74), L(0xac), L(0xfd), L(0xd9), L(0xb7), L(0x69),
|
|
L(0x2a), L(0xec), L(0x32), L(0x6f), L(0xf0), L(0x92), L(0x84), L(0xf1), L(0x40), L(0xc), L(0x8a), L(0xbc), L(0x39), L(0x6e),
|
|
L(0x2e), L(0x73), L(0xd4), L(0x6e), L(0x8a), L(0x74), L(0x2a), L(0xdc), L(0x60), L(0x1f), L(0xa3), L(0x7), L(0xde), L(0x75),
|
|
L(0x8b), L(0x74), L(0xc8), L(0xfe), L(0x63), L(0x75), L(0xf6), L(0x3d), L(0x63), L(0xac), L(0x33), L(0x89), L(0xc3), L(0xf0),
|
|
L(0xf8), L(0x2d), L(0x6b), L(0xb4), L(0x9e), L(0x74), L(0x8b), L(0x5c), L(0x33), L(0xb4), L(0xca), L(0xa8), L(0xe4), L(0x99),
|
|
L(0xb6), L(0x90), L(0xa1), L(0xef), L(0xf), L(0xd3), L(0x61), L(0xb2), L(0xc6), L(0x1a), L(0x94), L(0x7c), L(0x44), L(0x55),
|
|
L(0xf4), L(0x45), L(0xff), L(0x9e), L(0xa5), L(0x5a), L(0xc6), L(0xa0), L(0xe8), L(0x2a), L(0xc1), L(0x8d), L(0x6f), L(0x34),
|
|
L(0x11), L(0xb9), L(0xbe), L(0x4e), L(0xd9), L(0x87), L(0x97), L(0x73), L(0xcf), L(0x3d), L(0x23), L(0xae), L(0xd5), L(0x1a),
|
|
L(0x5e), L(0xae), L(0x5d), L(0x6a), L(0x3), L(0xf9), L(0x22), L(0xd), L(0x10), L(0xd9), L(0x47), L(0x69), L(0x15), L(0x3f),
|
|
L(0xee), L(0x52), L(0xa3), L(0x8), L(0xd2), L(0x3c), L(0x51), L(0xf4), L(0xf8), L(0x9d), L(0xe4), L(0x98), L(0x89), L(0xc8),
|
|
L(0x67), L(0x39), L(0xd5), L(0x5e), L(0x35), L(0x78), L(0x27), L(0xe8), L(0x3c), L(0x80), L(0xae), L(0x79), L(0x71), L(0xd2),
|
|
L(0x93), L(0xf4), L(0xaa), L(0x51), L(0x12), L(0x1c), L(0x4b), L(0x1b), L(0xe5), L(0x6e), L(0x15), L(0x6f), L(0xe4), L(0xbb),
|
|
L(0x51), L(0x9b), L(0x45), L(0x9f), L(0xf9), L(0xc4), L(0x8c), L(0x2a), L(0xfb), L(0x1a), L(0xdf), L(0x55), L(0xd3), L(0x48),
|
|
L(0x93), L(0x27), L(0x1), L(0x26), L(0xc2), L(0x6b), L(0x55), L(0x6d), L(0xa2), L(0xfb), L(0x84), L(0x8b), L(0xc9), L(0x9e),
|
|
L(0x28), L(0xc2), L(0xef), L(0x1a), L(0x24), L(0xec), L(0x9b), L(0xae), L(0xbd), L(0x60), L(0xe9), L(0x15), L(0x35), L(0xee),
|
|
L(0x42), L(0xa4), L(0x33), L(0x5b), L(0xfa), L(0xf), L(0xb6), L(0xf7), L(0x1), L(0xa6), L(0x2), L(0x4c), L(0xca), L(0x90),
|
|
L(0x58), L(0x3a), L(0x96), L(0x41), L(0xe7), L(0xcb), L(0x9), L(0x8c), L(0xdb), L(0x85), L(0x4d), L(0xa8), L(0x89), L(0xf3),
|
|
L(0xb5), L(0x8e), L(0xfd), L(0x75), L(0x5b), L(0x4f), L(0xed), L(0xde), L(0x3f), L(0xeb), L(0x38), L(0xa3), L(0xbe), L(0xb0),
|
|
L(0x73), L(0xfc), L(0xb8), L(0x54), L(0xf7), L(0x4c), L(0x30), L(0x67), L(0x2e), L(0x38), L(0xa2), L(0x54), L(0x18), L(0xba),
|
|
L(0x8), L(0xbf), L(0xf2), L(0x39), L(0xd5), L(0xfe), L(0xa5), L(0x41), L(0xc6), L(0x66), L(0x66), L(0xba), L(0x81), L(0xef),
|
|
L(0x67), L(0xe4), L(0xe6), L(0x3c), L(0xc), L(0xca), L(0xa4), L(0xa), L(0x79), L(0xb3), L(0x57), L(0x8b), L(0x8a), L(0x75),
|
|
L(0x98), L(0x18), L(0x42), L(0x2f), L(0x29), L(0xa3), L(0x82), L(0xef), L(0x9f), L(0x86), L(0x6), L(0x23), L(0xe1), L(0x75),
|
|
L(0xfa), L(0x8), L(0xb1), L(0xde), L(0x17), L(0x4a),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-rand-limit.input",
|
|
.want = "huffman-rand-limit.{s}.expect",
|
|
.want_no_input = "huffman-rand-limit.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L(0x61), M(1, 74), L(0xa), L(0xf8), L(0x8b), L(0x96), L(0x76), L(0x48), L(0xa), L(0x85), L(0x94), L(0x25), L(0x80),
|
|
L(0xaf), L(0xc2), L(0xfe), L(0x8d), L(0xe8), L(0x20), L(0xeb), L(0x17), L(0x86), L(0xc9), L(0xb7), L(0xc5), L(0xde),
|
|
L(0x6), L(0xea), L(0x7d), L(0x18), L(0x8b), L(0xe7), L(0x3e), L(0x7), L(0xda), L(0xdf), L(0xff), L(0x6c), L(0x73),
|
|
L(0xde), L(0xcc), L(0xe7), L(0x6d), L(0x8d), L(0x4), L(0x19), L(0x49), L(0x7f), L(0x47), L(0x1f), L(0x48), L(0x15),
|
|
L(0xb0), L(0xe8), L(0x9e), L(0xf2), L(0x31), L(0x59), L(0xde), L(0x34), L(0xb4), L(0x5b), L(0xe5), L(0xe0), L(0x9),
|
|
L(0x11), L(0x30), L(0xc2), L(0x88), L(0x5b), L(0x7c), L(0x5d), L(0x14), L(0x13), L(0x6f), L(0x23), L(0xa9), L(0xa),
|
|
L(0xbc), L(0x2d), L(0x23), L(0xbe), L(0xd9), L(0xed), L(0x75), L(0x4), L(0x6c), L(0x99), L(0xdf), L(0xfd), L(0x70),
|
|
L(0x66), L(0xe6), L(0xee), L(0xd9), L(0xb1), L(0x9e), L(0x6e), L(0x83), L(0x59), L(0xd5), L(0xd4), L(0x80), L(0x59),
|
|
L(0x98), L(0x77), L(0x89), L(0x43), L(0x38), L(0xc9), L(0xaf), L(0x30), L(0x32), L(0x9a), L(0x20), L(0x1b), L(0x46),
|
|
L(0x3d), L(0x67), L(0x6e), L(0xd7), L(0x72), L(0x9e), L(0x4e), L(0x21), L(0x4f), L(0xc6), L(0xe0), L(0xd4), L(0x7b),
|
|
L(0x4), L(0x8d), L(0xa5), L(0x3), L(0xf6), L(0x5), L(0x9b), L(0x6b), L(0xdc), L(0x2a), L(0x93), L(0x77), L(0x28),
|
|
L(0xfd), L(0xb4), L(0x62), L(0xda), L(0x20), L(0xe7), L(0x1f), L(0xab), L(0x6b), L(0x51), L(0x43), L(0x39), L(0x2f),
|
|
L(0xa0), L(0x92), L(0x1), L(0x6c), L(0x75), L(0x3e), L(0xf4), L(0x35), L(0xfd), L(0x43), L(0x2e), L(0xf7), L(0xa4),
|
|
L(0x75), L(0xda), L(0xea), L(0x9b), L(0xa),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-shifts.input",
|
|
.want = "huffman-shifts.{s}.expect",
|
|
.want_no_input = "huffman-shifts.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L('1'), L('0'), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258),
|
|
M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258),
|
|
M(2, 258), M(2, 76), L(0xd), L(0xa), L('2'), L('3'), M(2, 258), M(2, 258),
|
|
M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 258), M(2, 256),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-text-shift.input",
|
|
.want = "huffman-text-shift.{s}.expect",
|
|
.want_no_input = "huffman-text-shift.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L('/'), L('/'), L('C'), L('o'), L('p'), L('y'), L('r'), L('i'),
|
|
L('g'), L('h'), L('t'), L('2'), L('0'), L('0'), L('9'), L('T'),
|
|
L('h'), L('G'), L('o'), L('A'), L('u'), L('t'), L('h'), L('o'),
|
|
L('r'), L('.'), L('A'), L('l'), L('l'), M(23, 5), L('r'), L('r'),
|
|
L('v'), L('d'), L('.'), L(0xd), L(0xa), L('/'), L('/'), L('U'),
|
|
L('o'), L('f'), L('t'), L('h'), L('i'), L('o'), L('u'), L('r'),
|
|
L('c'), L('c'), L('o'), L('d'), L('i'), L('g'), L('o'), L('v'),
|
|
L('r'), L('n'), L('d'), L('b'), L('y'), L('B'), L('S'), L('D'),
|
|
L('-'), L('t'), L('y'), L('l'), M(33, 4), L('l'), L('i'), L('c'),
|
|
L('n'), L('t'), L('h'), L('t'), L('c'), L('n'), L('b'), L('f'),
|
|
L('o'), L('u'), L('n'), L('d'), L('i'), L('n'), L('t'), L('h'),
|
|
L('L'), L('I'), L('C'), L('E'), L('N'), L('S'), L('E'), L('f'),
|
|
L('i'), L('l'), L('.'), L(0xd), L(0xa), L(0xd), L(0xa), L('p'),
|
|
L('c'), L('k'), L('g'), L('m'), L('i'), L('n'), M(11, 4), L('i'),
|
|
L('m'), L('p'), L('o'), L('r'), L('t'), L('"'), L('o'), L('"'),
|
|
M(13, 4), L('f'), L('u'), L('n'), L('c'), L('m'), L('i'), L('n'),
|
|
L('('), L(')'), L('{'), L(0xd), L(0xa), L(0x9), L('v'), L('r'),
|
|
L('b'), L('='), L('m'), L('k'), L('('), L('['), L(']'), L('b'),
|
|
L('y'), L('t'), L(','), L('6'), L('5'), L('5'), L('3'), L('5'),
|
|
L(')'), L(0xd), L(0xa), L(0x9), L('f'), L(','), L('_'), L(':'),
|
|
L('='), L('o'), L('.'), L('C'), L('r'), L('t'), L('('), L('"'),
|
|
L('h'), L('u'), L('f'), L('f'), L('m'), L('n'), L('-'), L('n'),
|
|
L('u'), L('l'), L('l'), L('-'), L('m'), L('x'), L('.'), L('i'),
|
|
L('n'), L('"'), M(34, 5), L('.'), L('W'), L('r'), L('i'), L('t'),
|
|
L('('), L('b'), L(')'), L(0xd), L(0xa), L('}'), L(0xd), L(0xa),
|
|
L('A'), L('B'), L('C'), L('D'), L('E'), L('F'), L('G'), L('H'),
|
|
L('I'), L('J'), L('K'), L('L'), L('M'), L('N'), L('O'), L('P'),
|
|
L('Q'), L('R'), L('S'), L('T'), L('U'), L('V'), L('X'), L('x'),
|
|
L('y'), L('z'), L('!'), L('"'), L('#'), L(0xc2), L(0xa4), L('%'),
|
|
L('&'), L('/'), L('?'), L('"'),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-text.input",
|
|
.want = "huffman-text.{s}.expect",
|
|
.want_no_input = "huffman-text.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L('/'), L('/'), L(' '), L('z'), L('i'), L('g'), L(' '), L('v'),
|
|
L('0'), L('.'), L('1'), L('0'), L('.'), L('0'), L(0xa), L('/'),
|
|
L('/'), L(' '), L('c'), L('r'), L('e'), L('a'), L('t'), L('e'),
|
|
L(' '), L('a'), L(' '), L('f'), L('i'), L('l'), L('e'), M(5, 4),
|
|
L('l'), L('e'), L('d'), L(' '), L('w'), L('i'), L('t'), L('h'),
|
|
L(' '), L('0'), L('x'), L('0'), L('0'), L(0xa), L('c'), L('o'),
|
|
L('n'), L('s'), L('t'), L(' '), L('s'), L('t'), L('d'), L(' '),
|
|
L('='), L(' '), L('@'), L('i'), L('m'), L('p'), L('o'), L('r'),
|
|
L('t'), L('('), L('"'), L('s'), L('t'), L('d'), L('"'), L(')'),
|
|
L(';'), L(0xa), L(0xa), L('p'), L('u'), L('b'), L(' '), L('f'),
|
|
L('n'), L(' '), L('m'), L('a'), L('i'), L('n'), L('('), L(')'),
|
|
L(' '), L('!'), L('v'), L('o'), L('i'), L('d'), L(' '), L('{'),
|
|
L(0xa), L(' '), L(' '), L(' '), L(' '), L('v'), L('a'), L('r'),
|
|
L(' '), L('b'), L(' '), L('='), L(' '), L('['), L('1'), L(']'),
|
|
L('u'), L('8'), L('{'), L('0'), L('}'), L(' '), L('*'), L('*'),
|
|
L(' '), L('6'), L('5'), L('5'), L('3'), L('5'), L(';'), M(31, 5),
|
|
M(86, 6), L('f'), L(' '), L('='), L(' '), L('t'), L('r'), L('y'),
|
|
M(94, 4), L('.'), L('f'), L('s'), L('.'), L('c'), L('w'), L('d'),
|
|
L('('), L(')'), L('.'), M(144, 6), L('F'), L('i'), L('l'), L('e'),
|
|
L('('), M(43, 5), M(1, 4), L('"'), L('h'), L('u'), L('f'), L('f'),
|
|
L('m'), L('a'), L('n'), L('-'), L('n'), L('u'), L('l'), L('l'),
|
|
L('-'), L('m'), L('a'), L('x'), L('.'), L('i'), L('n'), L('"'),
|
|
L(','), M(31, 9), L('.'), L('{'), L(' '), L('.'), L('r'), L('e'),
|
|
L('a'), L('d'), M(79, 5), L('u'), L('e'), L(' '), L('}'), M(27, 6),
|
|
L(')'), M(108, 6), L('d'), L('e'), L('f'), L('e'), L('r'), L(' '),
|
|
L('f'), L('.'), L('c'), L('l'), L('o'), L('s'), L('e'), L('('),
|
|
M(183, 4), M(22, 4), L('_'), M(124, 7), L('f'), L('.'), L('w'), L('r'),
|
|
L('i'), L('t'), L('e'), L('A'), L('l'), L('l'), L('('), L('b'),
|
|
L('['), L('0'), L('.'), L('.'), L(']'), L(')'), L(';'), L(0xa),
|
|
L('}'), L(0xa),
|
|
},
|
|
},
|
|
TestCase{
|
|
.input = "huffman-zero.input",
|
|
.want = "huffman-zero.{s}.expect",
|
|
.want_no_input = "huffman-zero.{s}.expect-noinput",
|
|
.tokens = &[_]Token{ L(0x30), ml, M(1, 49) },
|
|
},
|
|
TestCase{
|
|
.input = "",
|
|
.want = "",
|
|
.want_no_input = "null-long-match.{s}.expect-noinput",
|
|
.tokens = &[_]Token{
|
|
L(0x0), ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml, ml,
|
|
ml, ml, ml, M(1, 8),
|
|
},
|
|
},
|
|
};
|
|
};
|