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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
################################################################################
#
# Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved.
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#
################################################################################
use Test;
use Convert::Binary::C @ARGV;
$^W = 1;
BEGIN { plan tests => 90 }
my $CCCFG = require './tests/include/config.pl';
eval {
$c1 = Convert::Binary::C->new( Include => ['tests/include/files'] );
$c2 = Convert::Binary::C->new( Include => ['tests/include/files'] );
};
ok($@,'',"failed to create Convert::Binary::C objects");
eval {
$c1->parse_file( 'tests/include/files/files.h' );
$c2->parse( <<CODE );
#include <empty.h>
#include <ifdef.h>
#include <ifnull.h>
#include <something.h>
CODE
};
ok($@,'',"failed to parse C-code");
eval {
$dep1 = $c1->dependencies;
$dep2 = $c2->dependencies;
@files1a = $c1->dependencies;
@files2a = $c2->dependencies;
};
ok($@,'',"failed to retrieve dependencies");
@files1s = keys %$dep1;
@files2s = keys %$dep2;
@incs = qw(
tests/include/files/empty.h
tests/include/files/ifdef.h
tests/include/files/ifnull.h
tests/include/files/something.h
);
@ref1 = ( 'tests/include/files/files.h', @incs );
@ref2 = @incs;
s/\\/\//g for @files1a, @files2a, @files1s, @files2s;
print "# \@files1a => @files1a\n";
ok( join(',', sort @ref1), join(',', sort @files1a),
"dependency names differ" );
print "# \@files1s => @files1s\n";
ok( join(',', sort @ref1), join(',', sort @files1s),
"dependency names differ" );
print "# \@files2a => @files2a\n";
ok( join(',', sort @ref2), join(',', sort @files2a),
"dependency names differ" );
print "# \@files2s => @files2s\n";
ok( join(',', sort @ref2), join(',', sort @files2s),
"dependency names differ" );
eval {
$c2 = Convert::Binary::C->new( %$CCCFG );
$c2->parse_file( 'tests/include/include.c' );
};
ok($@,'',"failed to create object / parse file");
eval {
$dep2 = $c2->dependencies;
};
ok($@,'',"failed to retrieve dependencies");
# check that the size, mtime and ctime entries are correct
for my $dep ( $dep1, $dep2 ) {
for my $file ( keys %$dep ) {
my($size, $mtime, $ctime) = (stat($file))[7,9,10];
ok( $size, $dep->{$file}{size}, "size mismatch for '$file'" );
ok( $mtime, $dep->{$file}{mtime}, "mtime mismatch for '$file'" );
ok( $ctime, $dep->{$file}{ctime}, "ctime mismatch for '$file'" );
}
}
|