# 17splitmessage.t -- ... # # $Id: 17splitmessage.t,v 1.2 2004/10/01 23:21:19 hoehrmann Exp $ use strict; use warnings; use Test::More tests => 18; use Test::Exception; use File::Spec qw(); use constant NO_DOCTYPE => File::Spec->catfile('samples', 'no-doctype.xml'); use constant TEST_CATALOG => File::Spec->catfile('samples', 'test.soc'); BEGIN { use_ok('SGML::Parser::OpenSP') }; BEGIN { use_ok('SGML::Parser::OpenSP::Tools') }; require_ok('SGML::Parser::OpenSP'); require_ok('SGML::Parser::OpenSP::Tools'); my $p = SGML::Parser::OpenSP->new; isa_ok($p, 'SGML::Parser::OpenSP'); ######################################################### ## newlines in enum attribute ######################################################### sub TestHandler12::new{bless{p=>$_[1],ok1=>0,ok2=>0,ok3=>0,ok4=>0, ok5=>0,ok6=>0,ok7=>0,ok8=>0},shift} sub TestHandler12::error { my $s = shift; my $e = shift; my $p = $s->{p}; return unless defined $s and defined $e and defined $p; my $l = $p->get_location; return unless defined $l; $s->{ok1}++; my $m; eval { $m = $p->split_message($e); }; return if $@; $s->{ok2}++; if ($m->{primary_message}{Number} == 122) { $s->{ok3}++ if $m->{primary_message}{ColumnNumber} == 8; $s->{ok4}++ if $m->{primary_message}{LineNumber} == 8; $s->{ok5}++ if $m->{primary_message}{Text} =~ /.+\n.+/; } elsif ($m->{primary_message}{Number} == 131) { $s->{ok6}++ if $m->{primary_message}{ColumnNumber} == 13; $s->{ok7}++ if $m->{primary_message}{LineNumber} == 8; $s->{ok8}++ if $m->{primary_message}{Text} =~ /.+\n.+/; } } my $h12 = TestHandler12->new($p); $p->handler($h12); $p->catalogs(TEST_CATALOG); $p->show_error_numbers(1); lives_ok { $p->parse("" . <<"__DOC__");

...

__DOC__ } 'newlines in enum attr values'; cmp_ok($h12->{ok1}, '>=', 2, 'two errors'); cmp_ok($h12->{ok2}, '>=', 2, 'two errors split'); ok($h12->{ok3}, 'correct col 122'); ok($h12->{ok4}, 'correct lin 122'); ok($h12->{ok5}, 'correct text 122'); ok($h12->{ok6}, 'correct col 131'); ok($h12->{ok7}, 'correct lin 131'); ok($h12->{ok8}, 'correct text 131'); $p->catalogs([]); $p->show_error_numbers(0); my @tests = ( ### 1 ### { input => [ q(0:116:49:1075801588.108:E: there is no attribute "XMLNS:UTILITY"), q(0), 0, 1, 0, ], output => { primary_message => { Number => '108', ColumnNumber => '49', Module => '1075801588', Severity => 'E', LineNumber => '116', Text => 'there is no attribute "XMLNS:UTILITY"' } } }, ### 2 ### { input => [ q(c:\\temp\\file:116:49:1075801588.108:E: there is no attribute "XMLNS:UTILITY"), q(c:\\temp\\file), 0, 1, 0, ], output => { primary_message => { Number => '108', ColumnNumber => '49', Module => '1075801588', Severity => 'E', LineNumber => '116', Text => 'there is no attribute "XMLNS:UTILITY"' } } }, ### 3 ### { input => [ q(c:\\temp\\file:116:49:E: there is no attribute "XMLNS:UTILITY"), q(c:\\temp\\file), 0, 0, 0, ], output => { primary_message => { ColumnNumber => '49', Severity => 'E', LineNumber => '116', Text => 'there is no attribute "XMLNS:UTILITY"' } } }, ### 4 ### { input => [ q(0:320:175:1075801588.338:W: cannot generate system identifier for general entity "AP"), q(0), 0, 1, 0, ], output => { primary_message => { Number => '338', ColumnNumber => '175', Module => '1075801588', Severity => 'W', LineNumber => '320', Text => 'cannot generate system identifier for general entity "AP"' } } }, ); foreach (@tests) { my $inpu = $_->{input}; my $outp = $_->{output}; my $resu = SGML::Parser::OpenSP::Tools::split_message(@$inpu); is_deeply($resu, $outp); }