D64-Disk-Dir-Item
view release on metacpan or search on metacpan
########################################
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 )