| use strict; | 
 | use warnings; | 
 |  | 
 | use FindBin; | 
 | BEGIN { | 
 |   unshift @INC, "$FindBin::Bin/../lib"; | 
 | }; | 
 |  | 
 | use Test::More; | 
 | use Test::KorAP::XML::TEI qw!korap_tempfile!; | 
 |  | 
 | require_ok('KorAP::XML::TEI::Header'); | 
 |  | 
 | my $h; | 
 |  | 
 | eval { $h = KorAP::XML::TEI::Header->new('<idsHeader>') }; | 
 |  | 
 | ok(!$h, 'Header invalid'); | 
 |  | 
 | subtest 'Corpus Header' => sub { | 
 |   $h = KorAP::XML::TEI::Header->new('<idsHeader type="corpus">'); | 
 |   ok($h, 'Header valid'); | 
 |  | 
 |   is($h->sigle, '', 'Check sigle'); | 
 |   is($h->sigle_esc, '', 'Check sigle escaped'); | 
 |   is($h->dir, '', 'Check dir'); | 
 |   is($h->type, 'corpus', 'Check dir'); | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader type=\"corpus\">$!, 'String'); | 
 |  | 
 |   my ($fh, $filename) = korap_tempfile('header_1'); | 
 |  | 
 |   print $fh <<'HTML'; | 
 | <-- mehrzeiliger | 
 | Kommentar | 
 |   -->  <fileDesc> | 
 |    <titleStmt> | 
 |     <korpusSigle>GOE</korpusSigle> | 
 |     <c.title>Goethe-Korpus</c.title> | 
 |    </titleStmt> | 
 | </idsHeader> | 
 | Test | 
 | HTML | 
 |  | 
 |   seek($fh, 0, 0); | 
 |  | 
 |   ok($h->parse($fh), 'Parsing'); | 
 |  | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader type=\"corpus\">!, 'String'); | 
 |   like($h->to_string, qr!<-- mehrzeiliger!, 'String'); | 
 |   like($h->to_string, qr!titleStmt!, 'String'); | 
 |   like($h->to_string, qr!</idsHeader>$!, 'String'); | 
 |  | 
 |   is($h->sigle, 'GOE', 'Check sigle'); | 
 |   is($h->sigle_esc, 'GOE', 'Check sigle escaped'); | 
 |   is($h->id, 'GOE', 'Check sigle'); | 
 |   is($h->id_esc, 'GOE', 'Check sigle escaped'); | 
 |   is($h->dir, 'GOE', 'Check dir'); | 
 |   is($h->type, 'corpus', 'Check type'); | 
 | }; | 
 |  | 
 | subtest 'Document Header' => sub { | 
 |   $h = KorAP::XML::TEI::Header->new('<idsHeader type="document">'); | 
 |   ok($h, 'Header valid'); | 
 |  | 
 |   is($h->sigle, '', 'Check sigle'); | 
 |   is($h->sigle_esc, '', 'Check sigle escaped'); | 
 |   is($h->dir, '', 'Check dir'); | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader type=\"document\">$!, 'String'); | 
 |  | 
 |   my ($fh, $filename) = korap_tempfile('header_2'); | 
 |  | 
 |   print $fh <<'HTML'; | 
 |   <fileDesc> | 
 |    <titleStmt> | 
 |     <dokumentSigle>GOE/"AAA"</dokumentSigle> | 
 |    </titleStmt> | 
 | </idsHeader> | 
 | Test | 
 | HTML | 
 |  | 
 |   seek($fh, 0, 0); | 
 |  | 
 |   ok($h->parse($fh), 'Parsing'); | 
 |  | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader type=\"document\">!, 'String'); | 
 |   like($h->to_string, qr!titleStmt!, 'String'); | 
 |   like($h->to_string, qr!</idsHeader>$!, 'String'); | 
 |  | 
 |   is($h->sigle, 'GOE/"AAA"', 'Check sigle'); | 
 |   is($h->sigle_esc, 'GOE/"AAA"', 'Check sigle escaped'); | 
 |   is($h->id, 'GOE_"AAA"', 'Check sigle'); | 
 |   is($h->id_esc, 'GOE_"AAA"', 'Check sigle escaped'); | 
 |   is($h->dir, 'GOE/"AAA"', 'Check dir'); | 
 |   is($h->type, 'document', 'Check type'); | 
 | }; | 
 |  | 
 |  | 
 | subtest 'Text Header' => sub { | 
 |   $h = KorAP::XML::TEI::Header->new('<idsHeader foo="bar" type="text">'); | 
 |   ok($h, 'Header valid'); | 
 |  | 
 |   is($h->sigle, '', 'Check sigle'); | 
 |   is($h->sigle_esc, '', 'Check sigle escaped'); | 
 |   is($h->dir, '', 'Check dir'); | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader foo="bar" type=\"text\">$!, 'String'); | 
 |  | 
 |   my ($fh, $filename) = korap_tempfile('header_3'); | 
 |  | 
 |   print $fh <<'HTML'; | 
 |   <fileDesc> | 
 |    <titleStmt> | 
 |     <textSigle>GOE/"AAA".00003</textSigle> | 
 |    </titleStmt> | 
 | </idsHeader> | 
 | Test | 
 | HTML | 
 |  | 
 |   seek($fh, 0, 0); | 
 |  | 
 |   ok($h->parse($fh), 'Parsing'); | 
 |  | 
 |   like($h->to_string, qr!^<\?xml version!, 'String'); | 
 |   like($h->to_string, qr!<idsHeader foo="bar" type=\"text\">!, 'String'); | 
 |   like($h->to_string, qr!titleStmt!, 'String'); | 
 |   like($h->to_string, qr!</idsHeader>$!, 'String'); | 
 |  | 
 |   like($h->to_string, qr!GOE/"AAA"\.00003!, 'String'); | 
 |  | 
 |   is($h->sigle, 'GOE/"AAA".00003', 'Check sigle'); | 
 |   is($h->sigle_esc, 'GOE/"AAA".00003', 'Check sigle escaped'); | 
 |   is($h->id, 'GOE_"AAA".00003', 'Check sigle'); | 
 |   is($h->id_esc, 'GOE_"AAA".00003', 'Check sigle escaped'); | 
 |   is($h->dir, 'GOE/"AAA"/00003', 'Check dir'); | 
 |   is($h->type, 'text', 'Check type'); | 
 | }; | 
 |  | 
 |  | 
 | done_testing; |