
=head1 Name

dbase_help

=head1 Ziel

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

... dummerweise tun sie das, wegen qquote()-Aufrufen, leider doch ...

=head1 Testfälle

in_list()

=cut

use utf8;
use strict;
use warnings;

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

use Test::More tests => 12;
use Dbase::Test;

BEGIN { use_ok 'Dbase::Help', qw(in_list in_range) }

is( in_list( 'foo', '' ),    1, 'keine Werte für foo' );
is( in_list( 'foo', 'NOT' ), 1, 'keine Werte für foo + Negation' );
is(
    in_list( 'foo', '', qw/bar baz/ ),
    "foo IN ('bar','baz')",
    q(foo ist "bar" oder "baz")
);
is(
    in_list( 'foo', NOT => qw/bar baz/ ),
    "( foo NOT IN ('bar','baz') OR foo IS NULL )",
    q(foo ist nicht "bar" oder "baz")
);
is(
    in_list( 'foo', '', qw/bar baz/, undef ),
    "( foo IN ('bar','baz') OR foo IS NULL )",
    'foo ist "bar", "baz" oder NULL'
);
is(
    in_list( 'foo', NOT => qw/bar baz/, undef ),
    "foo NOT IN ('bar','baz')",
    'foo ist nicht "bar", "baz" oder NULL'
);
is(
    in_list( 'foo', NOT => undef ),
    'foo IS NOT NULL',
    'foo ist nicht NULL'
);
is( in_range( foo => undef, undef ), undef,       'foo nicht definiert' );
is( in_range( foo => 42,    undef ), 'foo >= 42', 'foo mindestens 42' );
is( in_range( foo => undef, 42 ),    'foo <= 42', 'foo maximal 42' );
is(
    in_range( foo => 10, 24 ),
    'foo BETWEEN 10 AND 24',
    'foo zwischen 10 und 24'
);
