]> Dogcows Code - chaz/p5-File-KDBX/blob - t/compression.t
add initial WIP
[chaz/p5-File-KDBX] / t / compression.t
1 #!/usr/bin/env perl
2
3 use warnings;
4 use strict;
5
6 use lib 't/lib';
7 use TestCommon;
8
9 use IO::Handle;
10 use PerlIO::via::File::KDBX::Compression;
11 use Test::More;
12
13 eval { require Compress::Raw::Zlib }
14 or plan skip_all => 'Compress::Zlib::Raw required to test compression';
15
16 my $expected_plaintext = 'Tiny food from Spain!';
17
18 pipe(my $read, my $write) or die "pipe failed: $!";
19 PerlIO::via::File::KDBX::Compression->push($read);
20 PerlIO::via::File::KDBX::Compression->push($write);
21
22 print $write $expected_plaintext or die "print failed: $!";
23 binmode($write, ':pop'); # finish stream
24 close($write) or die "close failed: $!";
25
26 my $plaintext = do { local $/; <$read> };
27 close($read);
28 is $plaintext, $expected_plaintext, 'Deflate and inflate a string';
29
30 {
31 pipe(my $read, my $write) or die "pipe failed: $!";
32 PerlIO::via::File::KDBX::Compression->push($read);
33
34 print $write 'blah blah blah' or die "print failed: $!";
35 close($write) or die "close failed: $!";
36
37 is $read->error, 0, 'Read handle starts out fine';
38 my $plaintext = do { local $/; <$read> };
39 is $read->error, 1, 'Read handle can enter and error state';
40
41 like $PerlIO::via::File::KDBX::Compression::ERROR, qr/failed to uncompress/i,
42 'Error object is available';
43 }
44
45 done_testing;
This page took 0.039325 seconds and 4 git commands to generate.