use strict;
use warnings;
use utf8;
use Test::More;
use Benchmark ':hireswallclock';
use Mojo::DOM;
use Mojo::File;
use Mojo::ByteStream 'b';
use Data::Dumper;
use lib 'lib', '../lib';

use File::Basename 'dirname';
use File::Spec::Functions 'catdir';

use_ok('KorAP::XML::Krill');

# WPD/00001
my $path = catdir(dirname(__FILE__), 'corpus/WPD/00001');
ok(my $doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/!, 'Path');

ok($doc = KorAP::XML::Krill->new( path => $path ), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/$!, 'Path');

ok($doc->parse, 'Parse document');

# Metdata
is($doc->text_sigle, 'WPD/AAA/00001', 'ID');

my $meta = $doc->meta;
is($meta->{title}, 'A', 'title');

ok(!$meta->{sub_title}, 'subTitle');
is($doc->corpus_sigle, 'WPD', 'corpusID');
is($meta->{pub_date}, '20050328', 'pubDate');
is($meta->{pub_place}, 'URL:http://de.wikipedia.org', 'pubPlace');
is($meta->{text_class}->[0], 'freizeit-unterhaltung', 'TextClass');
is($meta->{text_class}->[1], 'reisen', 'TextClass');
is($meta->{text_class}->[2], 'wissenschaft', 'TextClass');
is($meta->{text_class}->[3], 'populaerwissenschaft', 'TextClass');
ok(!$meta->{text_class}->[4], 'TextClass');
is($meta->{author}, 'Ruru; Jens.Ol; Aglarech; u.a.', 'author');


#is($doc->author->[0], 'Ruru', 'author');
#is($doc->author->[1], 'Jens.Ol', 'author');
#is($doc->author->[2], 'Aglarech', 'author');
#ok(!$doc->author->[3], 'author');

# Additional information
is($meta->{editor}, 'wikipedia.org', 'Editor');
is($meta->{publisher}, 'Wikipedia', 'Publisher');
is($meta->{creation_date}, '20050000', 'Creation date');
ok(!$meta->{text_type}, 'No text_type');
ok(!$meta->{text_type_art}, 'no text_type art');
ok(!$meta->{text_type_ref}, 'no text_type ref');
ok(!$meta->{text_domain}, 'no text_domain');
ok(!$meta->{text_column}, 'no text_column');
ok(!$meta->keywords('keywords'), 'no keywords');
is($meta->keywords('text_class'), 'freizeit-unterhaltung reisen wissenschaft populaerwissenschaft', 'no text classes');

#is($doc->coll_title, 'Wikipedia', 'Collection title');
#is($doc->coll_sub_title, 'Die freie Enzyklopädie', 'Collection subtitle');
#is($doc->coll_editor, 'wikipedia.org', 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');

# A01/13047
$path = catdir(dirname(__FILE__), 'corpus/A01/13047');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');

ok($doc->parse, 'Parse document');
$meta = $doc->meta;
is($meta->{title}, 'Fischer und Kolp im Sonnenhügel', 'title');

ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'A01/APR/13047', 'ID');
is($doc->corpus_sigle, 'A01', 'corpusID');
is($meta->{pub_date}, '20010402', 'pubDate');
ok(!$meta->{pub_place}, 'pubPlace');
is($meta->{text_class}->[0], 'freizeit-unterhaltung', 'TextClass');
is($meta->{text_class}->[1], 'vereine-veranstaltungen', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');

# Additional information
ok(!$meta->{editor}, 'Editor');
ok(!$meta->{publisher}, 'Publisher');
is($meta->{creation_date}, '20010402', 'Creation date');
#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
ok(!$meta->{text_type}, 'text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');

# ERL/0001
$path = catdir(dirname(__FILE__), 'corpus/ERL/00001');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');

ok($doc->parse, 'Parse document');

$meta = $doc->meta;
is($meta->{title}, 'Amtsblatt des Landesbezirks Baden [diverse Erlasse]', 'title'); # Amtsblatt des Landesbezirks Baden [diverse Erlasse]
# MK2/ERL.00001

ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'MK2/ERL/00001', 'ID');
is($doc->corpus_sigle, 'MK2', 'corpusID');
is($meta->{pub_date}, '00000000', 'pubDate');
is($meta->{pub_place}, 'Karlsruhe', 'pubPlace');
is($meta->{text_class}->[0], 'politik', 'TextClass');
is($meta->{text_class}->[1], 'kommunalpolitik', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');

# Additional information
ok(!$meta->{editor}, 'Editor');
is($meta->{publisher}, 'Badenia Verlag und Druckerei', 'Publisher');
is($meta->{creation_date}, '19600000', 'Creation date');

# !!!
# diag 'Non-acceptance of creation date ranges may be temporary';


#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
is($meta->{text_type}, 'Erlass', 'text_type');
ok(!$meta->{text_type_art}, 'text_type art');


# A01/02035-substring
$path = catdir(dirname(__FILE__), 'corpus/A00/02035-substring');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
ok($doc->parse, 'Parse document');

$meta = $doc->meta;

is($meta->{title}, 'St. Galler Tagblatt, 11.01.2000, Ressort: TB-RSP (Abk.)', 'title'); # A00/JAN.02035
ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'A00/JAN/02035', 'ID');
is($doc->corpus_sigle, 'A00', 'corpusID');
is($meta->{pub_date}, '20000111', 'pubDate');
ok(!$meta->{pub_place}, 'pubPlace');
is($meta->{text_class}->[0], 'sport', 'TextClass');
is($meta->{text_class}->[1], 'ballsport', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');

# Additional information
ok(!$meta->{editor}, 'Editor');
ok(!$meta->{publisher}, 'Publisher');
is($meta->{creation_date}, "20000111", 'Creation date');
#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
ok(!$meta->{text_type}, 'text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');

# A01/02873-meta
$path = catdir(dirname(__FILE__), 'corpus/A00/02873-meta');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($meta->{title}, 'Tradition und Moderne', 'title');
ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'A00/JAN/02873', 'ID');
is($doc->corpus_sigle, 'A00', 'corpusID');
is($meta->{pub_date}, '20000113', 'pubDate');
ok(!$meta->{pub_place}, 'pubPlace');
is($meta->{text_class}->[0], 'kultur', 'TextClass');
is($meta->{text_class}->[1], 'film', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');


# Additional information
ok(!$meta->{editor}, 'Editor');
ok(!$meta->{publisher}, 'Publisher');
is($meta->{creation_date}, "20000113", 'Creation date');
#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
ok(!$meta->{text_type}, 'text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');


# A01/05663-unbalanced
$path = catdir(dirname(__FILE__), 'corpus/A00/05663-unbalanced');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($meta->{title}, 'Mehr Arbeitslose im Dezember', 'title');
ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'A00/JAN/05663', 'ID');
is($doc->corpus_sigle, 'A00', 'corpusID');
is($meta->{pub_date}, '20000124', 'pubDate');
ok(!$meta->{pub_place}, 'pubPlace');
is($meta->{text_class}->[0], 'gesundheit-ernaehrung', 'TextClass');
is($meta->{text_class}->[1], 'gesundheit', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');


# Additional information
ok(!$meta->{editor}, 'Editor');
ok(!$meta->{publisher}, 'Publisher');
is($meta->{creation_date}, "20000124", 'Creation date');
#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
ok(!$meta->{text_type}, 'text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');

# A01/07452-deep
$path = catdir(dirname(__FILE__), 'corpus/A00/07452-deep');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($meta->{title}, 'Wil im Dezember 1999', 'title');
ok(!$meta->{sub_title}, 'subTitle');
is($doc->text_sigle, 'A00/JAN/07452', 'ID');
is($doc->corpus_sigle, 'A00', 'corpusID');
is($meta->{pub_date}, '20000129', 'pubDate');
ok(!$meta->{pub_place}, 'pubPlace');
is($meta->{text_class}->[0], 'politik', 'TextClass');
is($meta->{text_class}->[1], 'kommunalpolitik', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
ok(!$meta->{author}, 'author');


# Additional information
ok(!$meta->{editor}, 'Editor');
ok(!$meta->{publisher}, 'Publisher');
is($meta->{creation_date}, "20000129", 'Creation date');
#ok(!$doc->coll_title, 'Collection title');
#ok(!$doc->coll_sub_title, 'Collection subtitle');
#ok(!$doc->coll_editor, 'Collection editor');
#ok(!$doc->coll_author, 'Collection author');
ok(!$meta->{text_type}, 'text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');

# ART
$path = catdir(dirname(__FILE__), 'corpus/artificial');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
#is($doc->path, $path . '/', 'Path');

ok($doc = KorAP::XML::Krill->new( path => $path ), 'Load Korap::Document');
#is($doc->path, $path . '/', 'Path');

ok($doc->parse, 'Parse document');
$meta = $doc->meta;

# Metdata
is($meta->{title}, 'Artificial Title', 'title');
is($meta->{sub_title}, 'Artificial Subtitle', 'subTitle');
is($doc->text_sigle, 'ART/ABC/00001', 'ID');
is($doc->corpus_sigle, 'ART', 'corpusID');
is($meta->{pub_date}, '20010402', 'pubDate');
is($meta->{pub_place}, 'Mannheim', 'pubPlace');
is($meta->{pub_place_key}, 'DE', 'pubPlace key');
is($meta->{text_class}->[0], 'freizeit-unterhaltung', 'TextClass');
is($meta->{text_class}->[1], 'vereine-veranstaltungen', 'TextClass');
ok(!$meta->{text_class}->[2], 'TextClass');
#is($doc->author->[0], 'Ruru', 'author');
#is($doc->author->[1], 'Jens.Ol', 'author');
#is($doc->author->[2], 'Aglarech', 'author');
is($meta->{author}, 'Ruru; Jens.Ol; Aglarech; u.a.', 'author');

# Additional information
is($meta->{editor}, 'Nils Diewald', 'Editor');
is($meta->{publisher}, 'Artificial articles Inc.', 'Publisher');
is($meta->{creation_date}, '19990601', 'Creation date');
#is($doc->coll_title, 'Artificial articles', 'Collection title');
#is($doc->coll_sub_title, 'Best of!', 'Collection subtitle');
#is($doc->coll_editor, 'Nils Diewald', 'Collection editor');
#is($doc->coll_author, 'Nils Diewald', 'Collection author');
is($meta->{text_type}, 'Zeitung: Tageszeitung', 'No text_type');
is($meta->{text_type_art}, 'Bericht', 'text_type art');


# Multipath headers
$path = catdir(dirname(__FILE__), 'corpus/VDI/JAN/00001');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/!, 'Path');

ok($doc = KorAP::XML::Krill->new( path => $path ), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/$!, 'Path');

ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($doc->text_sigle, 'VDI14/JAN/00001', 'text sigle');
is($doc->doc_sigle, 'VDI14/JAN', 'doc sigle');
is($meta->corpus_sigle, 'VDI14', 'corpus sigle');

is($meta->{title}, '10- Zz mit Zahl', 'title');

ok(!$meta->{sub_title}, 'subtitle');
is($meta->{pub_date}, '20140117', 'pubdate');
is($meta->{pub_place}, 'Düsseldorf', 'pubplace');
is($meta->{author}, 'Windhövel, Kerstin', 'author');
is($meta->{publisher}, 'VDI Verlag GmbH', 'publisher');
ok(!$meta->{editor}, 'editor');

ok(!$meta->{text_type}, 'text type');
ok(!$meta->{text_type_art}, 'text type art');
ok(!$meta->{text_type_ref}, 'text type ref');
ok(!$meta->{text_column}, 'text column');
ok(!$meta->{text_domain}, 'text domain');
ok(!$meta->{creation_date}, 'creation date');
ok(!$meta->{availability}, 'License');
ok(!$meta->{pages}, 'Pages');
ok(!$meta->{file_edition_statement}, 'file edition statement');
ok(!$meta->{bibl_edition_statement}, 'bibl edition statement');
is($meta->{reference}, 'VDI nachrichten, 17.01.2014, S. 10; 10- Zz mit Zahl [Ausführliche Zitierung nicht verfügbar]', 'Reference');

ok(!$doc->{language}, 'Language');
# !!!
# diag 'This may be "de" in the future';

is($meta->{doc_title}, 'VDI nachrichten, Januar 2014', 'Doc title');
ok(!$meta->{doc_sub_title}, 'Doc Sub title');
ok(!$meta->{doc_editor}, 'Doc editor');
ok(!$meta->{doc_author}, 'Doc author');

is($meta->{corpus_title}, 'VDI nachrichten', 'Corpus title');
ok(!$meta->{corpus_sub_title}, 'Corpus Sub title');
is($meta->{corpus_editor}, 'Verein Deutscher Ingenieure', 'Corpus editor');
ok(!$meta->{corpus_author}, 'Corpus author');

is($meta->keywords('keywords'), '', 'Keywords');
is($meta->keywords('text_class'), 'Freizeit-Unterhaltung Reisen Politik Ausland', 'Text class');

# WDD
$path = catdir(dirname(__FILE__), 'corpus/WDD/G27/38989');
ok($doc = KorAP::XML::Krill->new( path => $path . '/' ), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/!, 'Path');
ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($doc->text_sigle, 'WDD11/G27/38989', 'text sigle');
is($doc->doc_sigle, 'WDD11/G27', 'doc sigle');
is($doc->corpus_sigle, 'WDD11', 'corpus sigle');

is($meta->{title}, 'Diskussion:Gunter A. Pilz', 'title');
ok(!$meta->{sub_title}, 'subtitle');
is($meta->{pub_date}, '20111029', 'pubdate');
is($meta->{pub_place}, 'URL:http://de.wikipedia.org', 'pubplace');

is($meta->{author}, '€pa, u.a.', 'author');
is($meta->{publisher}, 'Wikipedia', 'publisher');
is($meta->{editor}, 'wikipedia.org', 'Editor');

is($meta->{text_type}, 'Diskussionen zu Enzyklopädie-Artikeln', 'text type');
ok(!$meta->{text_type_art}, 'text type art');
ok(!$meta->{text_type_ref}, 'text type ref');
ok(!$meta->{text_column}, 'text column');
ok(!$meta->{text_domain}, 'text domain');

is($meta->{creation_date}, '20070707', 'creation date');
is($meta->{availability}, 'CC-BY-SA', 'License');
ok(!$meta->{pages}, 'Pages');
ok(!$meta->{file_edition_statement}, 'file edition statement');
ok(!$meta->{bibl_edition_statement}, 'bibl edition statement');
is($meta->{reference}, 'Diskussion:Gunter A. Pilz, In: Wikipedia - URL:http://de.wikipedia.org/wiki/Diskussion:Gunter_A._Pilz: Wikipedia, 2007', 'Reference');

is($meta->{language}, 'de', 'Language');

is($meta->{doc_title}, 'Wikipedia, Diskussionen zu Artikeln mit Anfangsbuchstabe G, Teil 27', 'Doc title');
ok(!$meta->{doc_sub_title}, 'Doc Sub title');
ok(!$meta->{doc_editor}, 'Doc editor');
ok(!$meta->{doc_author}, 'Doc author');

is($meta->{corpus_title}, 'Wikipedia', 'Corpus title');
ok(!$meta->{corpus_sub_title}, 'Corpus Sub title');
is($meta->{corpus_editor}, 'wikipedia.org', 'Corpus editor');
ok(!$meta->{corpus_author}, 'Corpus author');

is($meta->keywords('keywords'), '', 'Keywords');
is($meta->keywords('text_class'), '', 'Text class');

is($meta->{availability}, 'CC-BY-SA', 'Availability');

use_ok('KorAP::XML::Meta::I5');

$path = catdir(dirname(__FILE__), 'corpus', 'I5', 'rei-example.i5');
ok($meta = KorAP::XML::Meta::I5->new, 'Construct meta object');
my $dom = Mojo::DOM->new->parse(Mojo::File->new($path)->slurp);
ok($meta->parse($dom->at('idsHeader'), 'corpus'), 'Parse corpus header');

my $hash = $meta->to_hash;
is($hash->{availability}, 'CC-BY-SA', 'Availability');
is($hash->{language}, 'de', 'Language');
is($hash->{corpus_title}, 'Reden und Interviews', 'Corpus title');
is($hash->{corpus_sigle}, 'REI', 'Corpus Sigle');

ok($meta->parse($dom->find('idsHeader')->[1], 'doc'), 'Parse corpus header');

$hash = $meta->to_hash;
is($hash->{availability}, 'CC-BY-SA', 'Availability');
is($hash->{language}, 'de', 'Language');
is($hash->{corpus_title}, 'Reden und Interviews', 'Corpus title');
is($hash->{corpus_sigle}, 'REI', 'Corpus Sigle');
is($hash->{doc_sigle}, 'REI/BNG', 'Document Sigle');
is($hash->{doc_title}, 'Reden der Bundestagsfraktion Bündnis 90/DIE GRÜNEN, (2002-2006)', 'Document Sigle');

ok($meta->parse($dom->find('idsHeader')->[2], 'text'), 'Parse corpus header');

$hash = $meta->to_hash;
is($hash->{availability}, 'CC-BY-SA', 'Availability');
is($hash->{language}, 'de', 'Language');
is($hash->{corpus_title}, 'Reden und Interviews', 'Corpus title');
is($hash->{corpus_sigle}, 'REI', 'Corpus Sigle');
is($hash->{doc_sigle}, 'REI/BNG', 'Document Sigle');
is($hash->{doc_title}, 'Reden der Bundestagsfraktion Bündnis 90/DIE GRÜNEN, (2002-2006)', 'Document Sigle');

is($hash->{text_sigle}, 'REI/BNG/00001');
is($hash->{title}, 'Energiewirtschaft');
is($hash->{sub_title}, 'Rede im Deutschen Bundestag am 19.01.2002');
is($hash->{creation_date}, '20020119');
is($hash->{pub_date}, '20020119');
is($hash->{pub_place_key}, 'DE');
is($hash->{reference}, 'Hustedt, Michaele: Energiewirtschaft. Rede im Deutschen Bundestag am 19.01.2002, Hrsg: Bundestagsfraktion Bündnis 90/DIE GRÜNEN [Ausführliche Zitierung nicht verfügbar]');
is($hash->{text_class}->[0], 'politik');
is($hash->{text_class}->[1], 'inland');
is($hash->{author}, 'Hustedt, Michaele');
is($hash->{pub_place}, 'Berlin');


# UMB45/D38/00001
$path = catdir(dirname(__FILE__), 'corpus','UMB45','D38','00001');
ok($doc = KorAP::XML::Krill->new( path => $path), 'Load Korap::Document');
like($doc->path, qr!\Q$path\E/!, 'Path');

ok($doc->parse, 'Parse document');
$meta = $doc->meta;

is($doc->text_sigle, 'UMB45/D38/00001', 'text sigle');
is($doc->doc_sigle, 'UMB45/D38', 'doc sigle');
is($doc->corpus_sigle, 'UMB45', 'corpus sigle');

is($meta->{title}, 'In: Über Schuld und Aufgabe der geistigen Führungsschicht im deutschen politischen Leben der Gegenwart. - Göttingen, 1955', 'title');


done_testing;
__END__



