Convert-Binary-C
view release on metacpan or search on metacpan
tests/209_sourcify.t view on Meta::CPAN
################################################################################
#
# 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 => 98 }
my $CCCFG = require './tests/include/config.pl';
eval {
$orig = Convert::Binary::C->new( %$CCCFG );
@clone = map { Convert::Binary::C->new( %$CCCFG ) } 1 .. 2;
};
ok($@,'',"failed to create Convert::Binary::C objects");
eval {
$orig->parse_file( 'tests/include/include.c' );
$orig->parse( <<ENDPARSE );
enum __foobar__;
enum __undefined__;
typedef int _int_2_, _int_3_, _int_4_;
ENDPARSE
};
ok($@,'',"failed to parse C-file");
eval {
$dump1 = $orig->sourcify;
$dump2 = $orig->sourcify;
$dump3 = $orig->sourcify;
};
ok($@,'',"failed to dump definitions");
ok( $dump1, $dump2, "dumps 1+2 differ" );
ok( $dump2, $dump3, "dumps 2+3 differ" );
ok( !/^#line/m ) for $dump1, $dump2, $dump3;
ok( !/^#define/m ) for $dump1, $dump2, $dump3;
eval {
$dump1 = $orig->sourcify( { Context => 1 } );
$dump2 = $orig->sourcify( { Context => 1 } );
$dump3 = $orig->sourcify( { Context => 1 } );
};
ok($@,'',"failed to dump definitions with context");
ok( $dump1, $dump2, "context dumps 1+2 differ" );
ok( $dump2, $dump3, "context dumps 2+3 differ" );
ok( /^#line\s+\d+\s+"[^"]+"/m ) for $dump1, $dump2, $dump3;
ok( !/^#define/m ) for $dump1, $dump2, $dump3;
eval {
$dump1 = $orig->sourcify( { Defines => 1 } );
$dump2 = $orig->sourcify( { Defines => 1 } );
$dump3 = $orig->sourcify( { Defines => 1 } );
};
ok($@,'',"failed to dump definitions with context");
ok( $dump1, $dump2, "context dumps 1+2 differ" );
ok( $dump2, $dump3, "context dumps 2+3 differ" );
ok( !/^#line/m ) for $dump1, $dump2, $dump3;
ok( /^#define\s+\w+/m ) for $dump1, $dump2, $dump3;
eval {
$dump1 = $orig->sourcify( { Context => 1, Defines => 1 } );
$dump2 = $orig->sourcify( { Context => 1, Defines => 1 } );
$dump3 = $orig->sourcify( { Context => 1, Defines => 1 } );
( run in 3.326 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )