=head1 Name

globals

=head1 Ziel

Test von Funktionen aus L<Dbase::Globals>,
die I<nicht> auf die Datenbank zugreifen

=head1 Testfälle

is_holiday() für verschiedene Schemata, aufzaehlung(),
if_defined() und rufnummernliste().

=cut

use utf8;
use strict;
use warnings;
BEGIN { unshift(@INC,($ENV{'POPHOME'}||'@POPHOME@').'/lib')
			unless $ENV{'KUNDE_NO_PERLPATH'};
      }


use Test::More tests => 21;
BEGIN { $ENV{'DbLocalCf'}=1; }
use Dbase::Test;

BEGIN {
	use_ok 'Dbase::Globals',
	  qw(aufzaehlung if_defined is_holiday rufnummernliste);
	use_ok 'Dbase::Help', qw(isotime text_only unixdate);
}

is_deeply( [ if_defined( foo => undef ) ], [], 'if_defined() mit undef' );
is_deeply( [ if_defined( foo => 'bar' ) ],
    [qw(foo bar)], 'if_defined() Standard' );
is_deeply( [ if_defined( foo => bar => sub { test => uc shift } ) ],
    [qw(foo test BAR)], 'if_defined() mit sub' );

is   is_holiday(1086829321      ), 1, '10. Juni 2004 bayerischer Feiertag';
isnt is_holiday(1086829321, 'DE'), 0, '10. Juni 2004 kein bundesweiter Feiertag';
is   is_holiday(1103940121      ), 1, '25. Dezember 2004 Feiertag';
my $mariae_himmelfahrt = unixdate('2008-08-15');
ok  !is_holiday( $mariae_himmelfahrt          ), 'Mariä Himmelfahrt bei uns kein Feiertag';
ok   is_holiday( $mariae_himmelfahrt, 'DE-BY' ), 'Mariä Himmelfahrt bayerischer Feiertag';

is( aufzaehlung(                                             ),
    '',
    'leere Aufzählung'
  );
is( aufzaehlung(  'eins'                                     ),
    'eins',
    'einteilige Aufzählung'
  );
is( aufzaehlung(qw(eins zwei                               ) ),
    'eins und zwei',
    'zweiteilige Aufzählung'
  );
is( aufzaehlung(qw(eins zwei drei                          ) ),
    'eins, zwei und drei',
    'dreiteilige Aufzählung'
  );
is( aufzaehlung(qw(eins zwei drei vier                     ) ),
    'eins, zwei, drei und vier',
    'vierteilige Aufzählung'
  );
is( aufzaehlung( { bindewort => 'oder' }, qw(eins zwei drei) ),
    'eins, zwei oder drei',
    'oder-Aufzählung'
  );

is( text_only("foo\nbar"), 'foobar', 'Löschen von Steuerzeichen' );
is(
    text_only('Das ist der Rand von Ostermundigen.'),
    'Das ist der Rand von Ostermundigen.',
    'Kein Löschen normaler Zeichen'
);
is( text_only(undef), undef, 'text_only(undef)' );

is_deeply(
    [ rufnummernliste('<+49 911 9352 1111|+49 911 9352 0') ],
    [
        { din5008 => '+49 911 9352-1111', in => 1 },
        { din5008 => '+49 911 9352-0',    in => 1, out => 1 },
    ],
    'rufnummernliste()'
);

is_deeply(
    scalar rufnummernliste('<+49 911 9352 1111|+49 911 9352 0'),
    [
        { din5008 => '+49 911 9352-1111', in => 1 },
        { din5008 => '+49 911 9352-0',    in => 1, out => 1 },
    ],
    'scalar rufnummernliste()'
);

