Testing suite for Record.pm. This script will assist you to determine
whether you system is capable of utilizing Record.pm (if there are problems, it's likely with the back-end SAX Parser you've got installed). I'll be expanding this in the future to provide better error handling and instructions for fixing the parsers, etc.
This commit is contained in:
parent
58dafa6904
commit
1d25bf1e4a
|
|
@ -0,0 +1,142 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Copyright 2006 (C) LibLime
|
||||
# Joshua Ferraro <jmf@liblime.com>
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU General Public License as published by the Free Software
|
||||
# Foundation; either version 2 of the License, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
|
||||
# Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
use strict; use warnings; #FIXME: turn off warnings before release
|
||||
|
||||
# specify the number of tests
|
||||
use Test::More tests => 23;
|
||||
use C4::Context;
|
||||
use C4::Record;
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Record_test.pl - test suite for Record.pm
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
$ export KOHA_CONF=/path/to/koha.conf
|
||||
$ ./Record_test.pl
|
||||
|
||||
=cut
|
||||
|
||||
## FIXME: Preliminarily grab the modules dir so we can run this in context
|
||||
|
||||
ok (1, 'module compiled');
|
||||
|
||||
# open some files for testing
|
||||
open MARC21MARC8,"testrecords/marc21_marc8.dat" or die $!;
|
||||
my $marc21_marc8; # = scalar (MARC21MARC8);
|
||||
foreach my $line (<MARC21MARC8>) {
|
||||
$marc21_marc8 .= $line;
|
||||
}
|
||||
$marc21_marc8 =~ s/\n$//;
|
||||
close MARC21MARC8;
|
||||
|
||||
open (MARC21UTF8,"<:utf8","testrecords/marc21_utf8.dat") or die $!;
|
||||
my $marc21_utf8;
|
||||
foreach my $line (<MARC21UTF8>) {
|
||||
$marc21_utf8 .= $line;
|
||||
}
|
||||
$marc21_utf8 =~ s/\n$//;
|
||||
close MARC21UTF8;
|
||||
|
||||
open MARC21MARC8COMBCHARS,"testrecords/marc21_marc8_combining_chars.dat" or die $!;
|
||||
my $marc21_marc8_combining_chars;
|
||||
foreach my $line(<MARC21MARC8COMBCHARS>) {
|
||||
$marc21_marc8_combining_chars.=$line;
|
||||
}
|
||||
$marc21_marc8_combining_chars =~ s/\n$//; #FIXME: why is a newline ending up here?
|
||||
close MARC21MARC8COMBCHARS;
|
||||
|
||||
open (MARC21UTF8COMBCHARS,"<:utf8","testrecords/marc21_utf8_combining_chars.dat") or die $!;
|
||||
my $marc21_utf8_combining_chars;
|
||||
foreach my $line(<MARC21UTF8COMBCHARS>) {
|
||||
$marc21_utf8_combining_chars.=$line;
|
||||
}
|
||||
close MARC21UTF8COMBCHARS;
|
||||
|
||||
open (MARCXMLUTF8,"<:utf8","testrecords/marcxml_utf8.xml") or die $!;
|
||||
my $marcxml_utf8;
|
||||
foreach my $line (<MARCXMLUTF8>) {
|
||||
$marcxml_utf8 .= $line;
|
||||
}
|
||||
close MARCXMLUTF8;
|
||||
|
||||
$marcxml_utf8 =~ s/\n//g;
|
||||
|
||||
## The Tests:
|
||||
my $error; my $marc; my $marcxml; my $dcxml; # some scalars to store values
|
||||
## MARC to MARCXML
|
||||
print "\n1. Checking conversion of simple ISO-2709 (MARC21) records to MARCXML\n";
|
||||
ok (($error,$marcxml) = marc2marcxml($marc21_marc8,'UTF-8','MARC21'), 'marc2marcxml - from MARC-8 to UTF-8 (MARC21)');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
$marcxml =~ s/\n//g;
|
||||
$marcxml =~ s/v\/ s/v\/s/g; # FIXME: bug in new_from_xml_record!!
|
||||
is ($marcxml,$marcxml_utf8, 'record matches antitype');
|
||||
|
||||
ok (($error,$marcxml) = marc2marcxml($marc21_utf8,'UTF-8','MARC21'), 'marc2marcxml - from UTF-8 to UTF-8 (MARC21)');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
$marcxml =~ s/\n//g;
|
||||
$marcxml =~ s/v\/ s/v\/s/g;
|
||||
is ($marcxml,$marcxml_utf8, 'record matches antitype');
|
||||
|
||||
print "\n2. checking binary MARC21 records with combining characters to MARCXML\n";
|
||||
ok (($error,$marcxml) = marc2marcxml($marc21_marc8_combining_chars,'MARC-8','MARC21'), 'marc2marcxml - from MARC-8 to MARC-8 with combining characters(MARC21)');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$marcxml) = marc2marcxml($marc21_marc8_combining_chars,'UTF-8','MARC21'), 'marc2marcxml - from MARC-8 to UTF-8 with combining characters (MARC21)');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$marcxml) = marc2marcxml($marc21_utf8_combining_chars,'UTF-8','MARC21'), 'marc2marcxml - from UTF-8 to UTF-8 with combining characters (MARC21)');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$dcxml) = marc2dcxml($marc21_utf8), 'marc2dcxml - from ISO-2709 to Dublin Core');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
print "\n3. checking ability to alter encoding\n";
|
||||
ok (($error,$marc) = changeEncoding($marc21_marc8,'MARC','MARC21','UTF-8'), 'changeEncoding - MARC21 from MARC-8 to UTF-8');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$marc) = changeEncoding($marc21_utf8,'MARC','MARC21','MARC-8'), 'changeEncoding - MARC21 from UTF-8 to MARC-8');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$marc) = changeEncoding($marc21_marc8,'MARC','MARC21','MARC-8'), 'changeEncoding - MARC21 from MARC-8 to MARC-8');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
ok (($error,$marc) = changeEncoding($marc21_utf8,'MARC','MARC21','UTF-8'), 'changeEncoding - MARC21 from UTF-8 to UTF-8');
|
||||
ok (!$error, 'no errors in conversion');
|
||||
|
||||
__END__
|
||||
|
||||
=head1 TODO
|
||||
|
||||
Still lots more to test including UNIMARC support
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Joshua Ferraro <jmf@liblime.com>
|
||||
|
||||
=head1 MODIFICATIONS
|
||||
|
||||
# $Id$
|
||||
|
||||
=cut
|
||||
|
|
@ -0,0 +1 @@
|
|||
00463 2200169 450000100060000000300050000600500170001100800410002802000150006909000150008410000340009924500510013325000250018465000220020994200250023195200370025684893ACLS19990324000000.0930421s19xx xxu 00010 eng d a0854562702 c1738d17381 aChristie, Agatha,d1890-1976.10aWhy didn't they ask Evans? /cAgatha Christie. aLarge print edition. 0aLarge type books. aONecLPkLP Christie bNPLp31000000010273r12.00u2148
|
||||
|
|
@ -0,0 +1 @@
|
|||
01442cam 2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056ocm11030895 OCoLC20060516100102.0840720s1984 ne b 001 0 eng a 83048926 aDLCcDLCdMUQdNLGGC aB84431862bccb a0800606035 (Fortress Press) :c$35.951 aNLGGCb84037516600aBM485b.L57 1984 vol. 200a296.1 sa296.1219 a11.372bcl0 a296.1bST66 aWN300aJewish writings of the Second Temple period :bApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /cedited by Michael E. Stone. aAssen, Netherlands :bVan Gorcum ;aPhiladelphia :bFortress Press,c1984. axxiii, 697 p. ;c25 cm. 0aCompendia rerum Iudaicarum ad Novum Testamentum.nSection 2,pLiterature of the Jewish people in the period of the Second Temple and the Talmud ;v2 aBibliography: p. 603-653. aIncludes indexes. 0aJewish religious literaturexHistory and criticism. 0aJudaismxHistoryyPost-exilic period, 586 B.C.-210 A.D.xSources. 6aLittâerature religieuse juivexHistoire et critique.17aOude Testament.2gtt17aApocriefen.2gtt17aDode-Zeerollen.2gtt1 aStone, Michael E.,d1938- k296.1 ST66 aC0bWN3
|
||||
|
|
@ -0,0 +1 @@
|
|||
00462 2200169 450000100060000000300050000600500170001100800410002802000150006909000150008410000340009924500510013325000250018465000220020994200250023195200370025684893ACLS19990324000000.0930421s19xx xxu 00010 eng d a0854562702 c1738d17381 aChristie, Agatha,d1890-1976.10aWhy didn't they ask Evans? /cAgatha Christie. aLarge print edition. 0aLarge type books. aONecLPkLP Christie bNPLp31000000010273r12.00u2148
|
||||
|
|
@ -0,0 +1 @@
|
|||
00463 a2200169 450000100060000000300050000600500170001100800410002802000150006909000150008410000340009924500510013325000250018465000220020994200250023195200370025684893ACLS19990324000000.0930421s19xx xxu 00010 eng d a0854562702 c1738d17381 aChristie, Agatha,d1890-1976.10aWhy didn't they ask Evans? /cAgatha Christie. aLarge print edition. 0aLarge type books. aONecLPkLP Christie bNPLp31000000010273r12.00u2148
|
||||
|
|
@ -0,0 +1 @@
|
|||
01442cam a2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056ocm11030895 OCoLC20060516100102.0840720s1984 ne b 001 0 eng a 83048926 aDLCcDLCdMUQdNLGGC aB84431862bccb a0800606035 (Fortress Press) :c$35.951 aNLGGCb84037516600aBM485b.L57 1984 vol. 200a296.1 sa296.1219 a11.372bcl0 a296.1bST66 aWN300aJewish writings of the Second Temple period :bApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /cedited by Michael E. Stone. aAssen, Netherlands :bVan Gorcum ;aPhiladelphia :bFortress Press,c1984. axxiii, 697 p. ;c25 cm. 0aCompendia rerum Iudaicarum ad Novum Testamentum.nSection 2,pLiterature of the Jewish people in the period of the Second Temple and the Talmud ;v2 aBibliography: p. 603-653. aIncludes indexes. 0aJewish religious literaturexHistory and criticism. 0aJudaismxHistoryyPost-exilic period, 586 B.C.-210 A.D.xSources. 6aLittérature religieuse juivexHistoire et critique.17aOude Testament.2gtt17aApocriefen.2gtt17aDode-Zeerollen.2gtt1 aStone, Michael E.,d1938- k296.1 ST66 aC0bWN3
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<record
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
|
||||
xmlns="http://www.loc.gov/MARC21/slim">
|
||||
|
||||
<leader>00463 a2200169 4500</leader>
|
||||
<controlfield tag="001">84893</controlfield>
|
||||
<controlfield tag="003">ACLS</controlfield>
|
||||
<controlfield tag="005">19990324000000.0</controlfield>
|
||||
<controlfield tag="008">930421s19xx xxu 00010 eng d</controlfield>
|
||||
<datafield tag="020" ind1=" " ind2=" ">
|
||||
<subfield code="a">0854562702</subfield>
|
||||
</datafield>
|
||||
<datafield tag="090" ind1=" " ind2=" ">
|
||||
<subfield code="c">1738</subfield>
|
||||
<subfield code="d">1738</subfield>
|
||||
</datafield>
|
||||
<datafield tag="100" ind1="1" ind2=" ">
|
||||
<subfield code="a">Christie, Agatha,</subfield>
|
||||
<subfield code="d">1890-1976.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="245" ind1="1" ind2="0">
|
||||
<subfield code="a">Why didn't they ask Evans? /</subfield>
|
||||
<subfield code="c">Agatha Christie.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="250" ind1=" " ind2=" ">
|
||||
<subfield code="a">Large print edition.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="650" ind1=" " ind2="0">
|
||||
<subfield code="a">Large type books.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="942" ind1=" " ind2=" ">
|
||||
<subfield code="a">ONe</subfield>
|
||||
<subfield code="c">LP</subfield>
|
||||
<subfield code="k">LP Christie</subfield>
|
||||
</datafield>
|
||||
<datafield tag="952" ind1=" " ind2=" ">
|
||||
<subfield code="b">NPL</subfield>
|
||||
<subfield code="p">31000000010273</subfield>
|
||||
<subfield code="r">12.00</subfield>
|
||||
<subfield code="u">2148</subfield>
|
||||
</datafield>
|
||||
</record>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<collection
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
|
||||
xmlns="http://www.loc.gov/MARC21/slim">
|
||||
|
||||
<record>
|
||||
<leader>00463 a2200169 4500</leader>
|
||||
<controlfield tag="001">84893</controlfield>
|
||||
<controlfield tag="003">ACLS</controlfield>
|
||||
<controlfield tag="005">19990324000000.0</controlfield>
|
||||
<controlfield tag="008">930421s19xx xxu 00010 eng d</controlfield>
|
||||
<datafield tag="020" ind1=" " ind2=" ">
|
||||
<subfield code="a">0854562702</subfield>
|
||||
</datafield>
|
||||
<datafield tag="090" ind1=" " ind2=" ">
|
||||
<subfield code="c">1738</subfield>
|
||||
<subfield code="d">1738</subfield>
|
||||
</datafield>
|
||||
<datafield tag="100" ind1="1" ind2=" ">
|
||||
<subfield code="a">Christie, Agatha,</subfield>
|
||||
<subfield code="d">1890-1976.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="245" ind1="1" ind2="0">
|
||||
<subfield code="a">Why didn't they ask Evans? /</subfield>
|
||||
<subfield code="c">Agatha Christie.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="250" ind1=" " ind2=" ">
|
||||
<subfield code="a">Large print edition.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="650" ind1=" " ind2="0">
|
||||
<subfield code="a">Large type books.</subfield>
|
||||
</datafield>
|
||||
<datafield tag="942" ind1=" " ind2=" ">
|
||||
<subfield code="a">ONe</subfield>
|
||||
<subfield code="c">LP</subfield>
|
||||
<subfield code="k">LP Christie</subfield>
|
||||
</datafield>
|
||||
<datafield tag="952" ind1=" " ind2=" ">
|
||||
<subfield code="b">NPL</subfield>
|
||||
<subfield code="p">31000000010273</subfield>
|
||||
<subfield code="r">12.00</subfield>
|
||||
<subfield code="u">2148</subfield>
|
||||
</datafield>
|
||||
</record>
|
||||
</collection>
|
||||
Loading…
Reference in New Issue