The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use lib 't';
use vars qw( $class );

use Test::More tests => 26;

# ------------------------------------------------------------------------

$class = 'Data::Phrasebook::Loader::XML';
use_ok($class);

my $file = 't/01phrases.xml';

# ------------------------------------------------------------------------

{
    my $obj = $class->new();
    isa_ok( $obj => $class, "Bare new" );

    eval { $obj->load(); };
    ok($@);
    eval { $obj->load( 'blah' ); };
    ok($@);
    eval { $obj->load( 't/01bad.xml' ); };
    ok($@);
    eval { $obj->load( 't/01bad2.xml' ); };
    ok($@);

    my $baz1 = '
  1
 2 
 3
   ';
    my $baz2 = '1 2 3'; 
    my $baz3 = 'Welcome to wherever'; 
    my $foo1 = 'my world';

    $obj->load( $file );

    my $phrase = $obj->get();
    is($phrase,undef);
    $phrase = $obj->get('blah');
    is($phrase,undef);
    $phrase = $obj->get('foo');
    is( $phrase, $foo1);
    $phrase = $obj->get('baz');
    is( $phrase, $baz1);

    $obj->load( $file, 'BLAH' );

    $phrase = $obj->get();
    is($phrase,undef);
    $phrase = $obj->get('blah');
    is($phrase,undef);
    $phrase = $obj->get('foo');
    is( $phrase, $foo1);
    $phrase = $obj->get('baz');
    is( $phrase, $baz1);

    $obj->load( $file, 'BASE' );

    $phrase = $obj->get();
    is($phrase,undef);
    $phrase = $obj->get('blah');
    is($phrase,undef);
    $phrase = $obj->get('foo');
    is( $phrase, $foo1);
    $phrase = $obj->get('baz');
    is( $phrase, $baz1);

    $obj->load( {file => $file, ignore_whitespace => 1}, 'BASE' );

    $phrase = $obj->get();
    is($phrase,undef);
    $phrase = $obj->get('blah');
    is($phrase,undef);
    $phrase = $obj->get('foo');
    is( $phrase, $foo1);
    $phrase = $obj->get('baz');
    is( $phrase, $baz2);

    $obj->load( {file => $file, ignore_whitespace => 1}, 'OTHER' );

    $phrase = $obj->get();
    is($phrase,undef);
    $phrase = $obj->get('blah');
    is($phrase,undef);
    $phrase = $obj->get('foo');
    is( $phrase, $foo1);
    $phrase = $obj->get('baz');
    is( $phrase, $baz3);
}