mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
27 lines
885 B
Zig
27 lines
885 B
Zig
const std = @import("../std.zig");
|
|
const Allocator = std.mem.Allocator;
|
|
|
|
pub const decode = @import("lzma2/decode.zig");
|
|
|
|
pub fn decompress(
|
|
allocator: Allocator,
|
|
reader: anytype,
|
|
writer: anytype,
|
|
) !void {
|
|
var decoder = try decode.Decoder.init(allocator);
|
|
defer decoder.deinit(allocator);
|
|
return decoder.decompress(allocator, reader, writer);
|
|
}
|
|
|
|
test {
|
|
const expected = "Hello\nWorld!\n";
|
|
const compressed = &[_]u8{ 0x01, 0x00, 0x05, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x0A, 0x02, 0x00, 0x06, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x0A, 0x00 };
|
|
|
|
const allocator = std.testing.allocator;
|
|
var decomp = std.ArrayList(u8).init(allocator);
|
|
defer decomp.deinit();
|
|
var stream = std.io.fixedBufferStream(compressed);
|
|
try decompress(allocator, stream.reader(), decomp.writer());
|
|
try std.testing.expectEqualSlices(u8, expected, decomp.items);
|
|
}
|