Asm-Preproc
view release on metacpan or search on metacpan
eval {$lex->()};
is $@, "error: unbalanced token at: /*\n", "unbalanced token";
done_testing();
#------------------------------------------------------------------------------
# TEST
sub t_get {
my($type, $value, $text, $file, $line_nr) = @_;
my $id = "[line ".(caller)[2]."]";
if (defined $type) {
isa_ok $token = $lex->(), 'Asm::Preproc::Token';
is $token->type, $type, "$id type $type";
is $token->value, $value, "$id value $value";
is $token->line->text, $text, "$id text $text";
is $token->line->file, $file, "$id file ".($file||'');
is $token->line->line_nr, $line_nr, "$id line_nr ".($line_nr||0);
}
else {
is $1, "\n", "newline";
ok $line->{text} =~ /\G\z/gcxs, "match";
#------------------------------------------------------------------------------
# error
my $warn;
$SIG{__WARN__} = sub {$warn = shift};
sub test_error {
my($error_msg, $expected_error, $expected_warning) = @_;
my $line_nr = (caller)[2];
my $test_name = "[line $line_nr]";
eval { $line->error($error_msg) };
is $@, $expected_error, "$test_name die()";
$warn = "";
$line->warning($error_msg);
is $warn, $expected_warning, "$test_name warning()";
$warn = undef;
}
test_error("test error","f1.asm(1) : error: test error\n", "f1.asm(1) : warning: test error\n");
$line->line_nr(0);
test_error("test error","f1.asm : error: test error\n", "f1.asm : warning: test error\n");
is $warn, undef, "no warnings";
#------------------------------------------------------------------------------
# is_equal, is_different
sub is_equal {
my $line = "(line ". (caller)[2] .")";
ok $line1 == $line2, " == $line";
ok !($line1 != $line2), "! != $line";
}
sub is_different {
my $line = "(line ". (caller)[2] .")";
ok $line1 != $line2, " != $line";
ok !($line1 == $line2), "! == $line";
}
isa_ok $line1 = Asm::Preproc::Line->new(),
'Asm::Preproc::Line';
isa_ok $line2 = Asm::Preproc::Line->new(),
'Asm::Preproc::Line';
is_equal;
t/Token-error.t view on Meta::CPAN
my $warn;
$SIG{__WARN__} = sub {$warn = shift};
my $token;
sub test_error {
my($error_msg,
$expected_error, $expected_warning,
$expected_error_notoken, $expected_warning_notoken) = @_;
my $line_nr = (caller)[2];
my $test_name = "[line $line_nr]";
eval { $token->error($error_msg) };
is $@, $expected_error, "$test_name error()";
eval { Asm::Preproc::Token->error_at($token, $error_msg) };
is $@, $expected_error, "$test_name error_at()";
eval { Asm::Preproc::Token->error_at(undef, $error_msg) };
is $@, $expected_error_notoken, "$test_name error_at(undef)";
use_ok 'Asm::Preproc';
use_ok 'Asm::Preproc::Line';
our $pp;
#------------------------------------------------------------------------------
# Utilities
sub test_getline {
my($text, $file, $line_nr) = @_;
my $caller_line_nr = (caller)[2];
my $test_name = "[line $caller_line_nr]";
my $line = $pp->getline;
isa_ok $line, 'Asm::Preproc::Line';
# convert path separators to Unix-type
if ($line) {
my $line_file = $line->file;
$line_file =~ s/\\/\//g;
$line->file($line_file);
}
is_deeply $line,
Asm::Preproc::Line->new($text, $file, $line_nr),
"$test_name line";
}
sub test_eof {
my $caller_line_nr = (caller)[2];
my $test_name = "[line $caller_line_nr]";
for (1..2) {
my $line = $pp->getline;
is $line, undef, "$test_name eof";
}
}
1;
( run in 0.453 second using v1.01-cache-2.11-cpan-a3c8064c92c )