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
ok(!$meta->{editor}, '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');
ok(!$meta->{editor}, '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');

done_testing;
__END__



