File: 07-bzip2.t

package info (click to toggle)
libterm-ttyrec-plus-perl 0.09-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 596 kB
  • sloc: perl: 2,219; makefile: 7
file content (76 lines) | stat: -rw-r--r-- 3,324 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
use Test::More tests =>   10 # initial sanity checks
                        + 5  # number of frames
                        * 11 # tests per frame
                        + 1  # post-read tests
                        ;

use Term::TtyRec::Plus;

# check whether two floating point values are close enough
sub is_float {
    my ($a, $b, $test) = @_;
    if (abs($a - $b) < 1e-4) {
        pass($test);
    }
    else {
        fail($test);
        diag("Expected $a to be close to $b.");
    }
}

my $t = Term::TtyRec::Plus->new(
    infile => "t/simple.ttyrec.bz2",
);
isnt($t, undef, "new returns something");
can_ok($t, qw(next_frame infile filehandle time_threshold frame_filter frame prev_timestamp relative_time accum_diff));

# initial settings
is($t->infile(), "t/simple.ttyrec.bz2", "t->infile() set correctly");
isnt($t->filehandle(), undef, "t->filehandle() defined");
is($t->time_threshold(), undef, "t->time_threshold() initially undef");
isnt($t->frame_filter(), undef, "t->frame_filter() defined");
is($t->frame(), 0, "t->frame() initially 0");
is($t->prev_timestamp(), undef, "t->prev_timestamp() initially undef");
is($t->relative_time(), 0, "t->relative_time() initially 0");
is($t->accum_diff(), 0, "t->accum_diff() initially 0");

my @expected_outputs = (
    [undef,               undef], # for ease with frame_number, etc.
    ["frame 1",           1166173605.32873],
    ["frame 2",           1166173605.90382],
    ["frame 3",           1166173606.20291],
    ["penultimate frame", 1166173606.83821],
    ["final frame",       1166173608.21921],
);
my $frame_number = 0;
my $relative_time = 0;

while (my $frame_ref = $t->next_frame) {
    ++$frame_number;
    my @frame = @{ $expected_outputs[$frame_number] };

    is($frame_ref->{frame}, $frame_number, "Frame number ($frame_number) correct (from frame_ref)");
    is($frame_ref->{frame}, $frame_number, "Frame number ($frame_number) correct (from t->frame())");
    is($frame_ref->{data}, $frame[0], "Frame $frame_number data block is correct");

    is_float($frame_ref->{orig_timestamp}, $frame[1], "Frame $frame_number orig_timestamp is correct");
    is_float($frame_ref->{diffed_timestamp}, $frame[1], "Frame $frame_number diffed_timestamp is correct");
    is_float($frame_ref->{timestamp}, $frame[1], "Frame $frame_number timestamp is correct");
    is_float($t->prev_timestamp(), $frame[1], "Frame $frame_number timestamp is correct (from t->prev_timestamp())");

    if ($frame_number == 1) {
        is($frame_ref->{prev_timestamp}, undef, "Frame $frame_number prev_timestamp is correct (from frame_ref)");
        is($frame_ref->{diff}, 0, "Frame $frame_number diff is correct");
    }
    else {
        is_float($frame_ref->{prev_timestamp}, $expected_outputs[$frame_number - 1][1], "Frame $frame_number prev_timestamp is correct");
        is_float($frame_ref->{diff}, $frame[1] - $expected_outputs[$frame_number - 1][1], "Frame $frame_number diff is correct");
    }

    $relative_time += $frame_number == 1 ? 0 : $frame_ref->{diff};
    is_float($frame_ref->{relative_time}, $relative_time, "Frame $frame_number relative time (from frame_ref)");
    is_float($t->relative_time(), $relative_time, "Frame $frame_number relative time (from t->relative_time())");
}

is($t->next_frame, undef, "next_frame returns undef after EOF");