D64-Disk-Dir-Item

 view release on metacpan or  search on metacpan

t/01-new.t  view on Meta::CPAN

########################################
use strict;
use warnings;
use Readonly;
use Test::Deep;
use Test::Exception;
use Test::More tests => 41;
########################################
our $class;
BEGIN {
    $class = 'D64::Disk::Dir::Item';
    use_ok($class, qw(:all));
}
########################################
{
    can_ok($class, qw(new data type closed locked track sector name side_track side_sector record_length size print validate));
}
########################################
{
    my $test_del = $T_DEL == 0b000;
    my $test_seq = $T_SEQ == 0b001;
    my $test_prg = $T_PRG == 0b010;
    my $test_usr = $T_USR == 0b011;
    my $test_rel = $T_REL == 0b100;
    my $test_cbm = $T_CBM == 0b101;
    my $test_dir = $T_DIR == 0b110;
    my $test = $test_del && $test_seq && $test_prg && $test_usr && $test_rel && $test_cbm && $test_dir;
    ok($test, 'export file type constants');
}
########################################
{
    my $item = $class->new();
    my $data = $item->data();
    my $expected_data = chr (0x00) x 0x1e;
    is($data, $expected_data, 'empty item initialized with thirty $00 bytes (get scalar data)');
}
########################################
{
    my $item = $class->new();
    my @data = $item->data();
    my @expected_data = map { chr 0x00 } (0x01 .. 0x1e);
    cmp_deeply(\@data, \@expected_data, 'empty item initialized with thirty $00 bytes (get array data)');
}
########################################
sub get_data {
    my @bytes = qw(82 11 00 54 45 53 54 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 a0 00 00 00 00 00 00 00 00 00 01 00);
    my @data = map { chr } map { hex } @bytes;
    return @data;
}
########################################
{
    my $initial_data = join '', get_data();
    my $item = $class->new($initial_data);
    my $data = $item->data();
    is($data, $initial_data, 'initialize directory item using data provided via scalar parameter');
}
########################################
{
    my @initial_data = get_data();
    my $item = $class->new(@initial_data);
    my @data = $item->data();
    cmp_deeply(\@data, \@initial_data, 'initialize directory item using data provided via array parameter');
}
########################################
{
    my @initial_data = get_data();
    my $item = $class->new(\@initial_data);
    my @data = $item->data();
    cmp_deeply(\@data, \@initial_data, 'initialize directory item using data provided via arrayref parameter');
}
########################################
{
    my $item = $class->new();
    my $updated_data = join '', get_data();
    my $data = $item->data($updated_data);
    is($data, $updated_data, 'update directory item with data provided via scalar parameter');



( run in 2.233 seconds using v1.01-cache-2.11-cpan-364913b4093 )