use strict;
use warnings;
use MARC::File::XML;
use MARC::Record;
use MARC::Batch;
use Test::More tests => 8;
## create a MARC::Record object from some MARC data on disk
my $batch = MARC::Batch->new( 'USMARC', 't/record.dat' );
my $r1 = $batch->next();
## serialize the record as XML
my $xml = $r1->as_xml();
## parse the XML into another MARC::Record object
my $r2 = MARC::Record->new_from_xml( $xml );
## make sure both MARC::Record objects are the same
is( $r1->as_formatted(), $r2->as_formatted(), 'xml encode/decode style 1' );
## try alternate calling style
my $r3 = MARC::Record::new_from_xml( $xml );
is( $r1->as_formatted(), $r3->as_formatted(), 'xml encode/decode style 2' );
my $xml2 = join( "\n",
MARC::File::XML::header(),
MARC::File::XML::record( $r1 ),
MARC::File::XML::footer()
);
is ( $xml, $xml2, 'xml encode/decode style 3' );
## writing to a file
my $file = MARC::File::XML->out( 't/test.xml' );
isa_ok( $file, 'MARC::File::XML' );
ok( $file->write( $r3 ), 'write()' );
ok( $file->close(), 'close()' );
$file = MARC::File::XML->in( 't/test.xml' );
my $r4 = $file->next();
isa_ok( $r4, 'MARC::Record' );
is( $r4->as_formatted(), $r3->as_formatted(), 'writing to file works' );
unlink( 't/test.xml' );