The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use Test::More tests => 13;
use Test::Output;
use Treex::Core::Run;

is(
    Treex::Core::Run->_get_reader_name_for(qw(a.txt b.txt)),
    'Read::Text',
    'reader for *.txt'
);

is(
    Treex::Core::Run->_get_reader_name_for(qw(a.txt.gz b.txt.gz)),
    'Read::Text',
    'reader for *.txt.gz'
);

is(
    eval{ Treex::Core::Run->_get_reader_name_for(qw(a.txt.gz b.txt))},
    'Read::Text',
    'reader for *.txt and *.txt.gz'
);


is(
    Treex::Core::Run->_get_reader_name_for(qw(a.treex b.treex)),
    'Read::Treex',
    'reader for *.treex'
);

is(
    Treex::Core::Run->_get_reader_name_for(qw(a.treex.gz b.treex.gz)),
    'Read::Treex',
    'reader for *.treex.gz'
);

is(
    Treex::Core::Run->_get_reader_name_for(qw(a.streex b.streex)),
    'Read::Treex',
    'reader for *.streex'
);

is(
    eval{ Treex::Core::Run->_get_reader_name_for(qw(a.treex.gz b.treex))},
    'Read::Treex',
    'reader for *.treex and *.treex.gz'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a.txt b.treex))}
    },
    qr/must have the same extension/,
    'mixing *.txt and *.treex'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a b))}
    },
    qr/must have extensions/,
    'files without extension'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a.aaa b.aaa))}
    },
    qr/(no DocumentReader implemented|must have extensions)/,
    'files with unknown extension'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a.aaa b.txt))}
    },
    qr/(no DocumentReader implemented|must have extensions)/,
    'files with unknown extension'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a.streex.gz b.streex.gz))}
    },
    qr/(no DocumentReader implemented|must have extensions)/,
    'extension *.streex.gz is not allowed'
);

stderr_like (
    sub {
         eval { Treex::Core::Run->_get_reader_name_for(qw(a.txtXgz))}
    },
    qr/(no DocumentReader implemented|must have extensions)/,
    'files with unknown extension'
);