diff options
author | Martin Ashby <martin@ashbysoft.com> | 2023-09-15 22:07:26 +0100 |
---|---|---|
committer | Martin Ashby <martin@ashbysoft.com> | 2023-09-15 22:07:26 +0100 |
commit | 40847ee327129a7466792b7606449bd91968c42f (patch) | |
tree | a13de2171ab04ddbf478cd9d58c94803a6d65873 /src/main.zig | |
parent | e3f21b6c3253da86dec6cb231581cbbbd4b4a2d7 (diff) | |
download | zip-zig-40847ee327129a7466792b7606449bd91968c42f.tar.gz zip-zig-40847ee327129a7466792b7606449bd91968c42f.tar.bz2 zip-zig-40847ee327129a7466792b7606449bd91968c42f.tar.xz zip-zig-40847ee327129a7466792b7606449bd91968c42f.zip |
Add a test for deflate and comment
Add a method for getting a comment
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main.zig b/src/main.zig index 20c939a..417f10b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -111,6 +111,9 @@ const ZipFile = struct { fn file_name(self: ZipFile, index: u16) []const u8 { return self.central_directory_headers[index].file_name; } + fn file_comment(self: ZipFile, index: u16) []const u8 { + return self.central_directory_headers[index].file_comment; + } fn extract(self: ZipFile, index: u16, stream_or_file_in: anytype, stream_or_file_out: anytype) !void { const cdh = self.central_directory_headers[index]; try stream_or_file_in.seekTo(cdh.relative_offset_of_local_header); @@ -170,7 +173,7 @@ const CentralDirectoryHeader = struct { version_made_by: u16, version_needed_to_extract: u16, general_purpose_bit_flag: u16, - compression_method: u16, + compression_method: ZipFile.CompressionMethod, last_mod_file_time: u16, last_mod_file_date: u16, crc32: u32, @@ -330,7 +333,7 @@ test "foo2" { try std.testing.expectEqualStrings(zf.file_name(1), "foo.txt"); } -test "extract" { +test "extract stored" { const test_zip = @embedFile("hello.zip"); var fbs = std.io.fixedBufferStream(test_zip); var zf = try ZipFile.from(std.testing.allocator, &fbs); @@ -343,3 +346,16 @@ test "extract" { try zf.extract(1, &fbs, &fbs_out); try std.testing.expectEqualStrings("hi there\n", fbs_out.getWritten()); } + +test "extract deflate" { + const test_zip = @embedFile("deflate.zip"); + var fbs = std.io.fixedBufferStream(test_zip); + var zf = try ZipFile.from(std.testing.allocator, &fbs); + defer zf.deinit(); + var out = [_]u8{0} ** 1024; + var fbs_out = std.io.fixedBufferStream(&out); + try std.testing.expectEqualStrings("Here is a comment :)", zf.file_comment(0)); + try std.testing.expectEqual(ZipFile.CompressionMethod.deflate, zf.central_directory_headers[0].compression_method); + try zf.extract(0, &fbs, &fbs_out); + try std.testing.expectEqualStrings(@embedFile("foo.txt"), fbs_out.getWritten()); +} |