From 1d25bf1e4ac45f0d53a2d25396f386bb471ea192 Mon Sep 17 00:00:00 2001 From: kados Date: Mon, 29 May 2006 17:43:56 +0000 Subject: [PATCH] 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. --- C4/tests/Record_test.pl | 142 ++++++++++++++++++ C4/tests/testrecords/marc21_marc8.dat | 1 + .../marc21_marc8_combining_chars.dat | 1 + C4/tests/testrecords/marc21_marc8_errors.dat | 1 + C4/tests/testrecords/marc21_utf8.dat | 1 + .../marc21_utf8_combining_chars.dat | 1 + C4/tests/testrecords/marcxml_utf8.xml | 44 ++++++ .../marcxml_utf8_entityencoded.xml | 46 ++++++ 8 files changed, 237 insertions(+) create mode 100755 C4/tests/Record_test.pl create mode 100644 C4/tests/testrecords/marc21_marc8.dat create mode 100644 C4/tests/testrecords/marc21_marc8_combining_chars.dat create mode 100644 C4/tests/testrecords/marc21_marc8_errors.dat create mode 100644 C4/tests/testrecords/marc21_utf8.dat create mode 100644 C4/tests/testrecords/marc21_utf8_combining_chars.dat create mode 100644 C4/tests/testrecords/marcxml_utf8.xml create mode 100644 C4/tests/testrecords/marcxml_utf8_entityencoded.xml diff --git a/C4/tests/Record_test.pl b/C4/tests/Record_test.pl new file mode 100755 index 0000000000..c308499215 --- /dev/null +++ b/C4/tests/Record_test.pl @@ -0,0 +1,142 @@ +#!/usr/bin/perl +# +# Copyright 2006 (C) LibLime +# Joshua Ferraro +# +# 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 () { + $marc21_marc8 .= $line; +} +$marc21_marc8 =~ s/\n$//; +close MARC21MARC8; + +open (MARC21UTF8,"<:utf8","testrecords/marc21_utf8.dat") or die $!; +my $marc21_utf8; +foreach my $line () { + $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() { + $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() { + $marc21_utf8_combining_chars.=$line; +} +close MARC21UTF8COMBCHARS; + +open (MARCXMLUTF8,"<:utf8","testrecords/marcxml_utf8.xml") or die $!; +my $marcxml_utf8; +foreach my $line () { + $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 + +=head1 MODIFICATIONS + +# $Id$ + +=cut diff --git a/C4/tests/testrecords/marc21_marc8.dat b/C4/tests/testrecords/marc21_marc8.dat new file mode 100644 index 0000000000..ac1f8dd851 --- /dev/null +++ b/C4/tests/testrecords/marc21_marc8.dat @@ -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 diff --git a/C4/tests/testrecords/marc21_marc8_combining_chars.dat b/C4/tests/testrecords/marc21_marc8_combining_chars.dat new file mode 100644 index 0000000000..0991ec90da --- /dev/null +++ b/C4/tests/testrecords/marc21_marc8_combining_chars.dat @@ -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 diff --git a/C4/tests/testrecords/marc21_marc8_errors.dat b/C4/tests/testrecords/marc21_marc8_errors.dat new file mode 100644 index 0000000000..f7ea2aaf0c --- /dev/null +++ b/C4/tests/testrecords/marc21_marc8_errors.dat @@ -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 diff --git a/C4/tests/testrecords/marc21_utf8.dat b/C4/tests/testrecords/marc21_utf8.dat new file mode 100644 index 0000000000..0061c846bc --- /dev/null +++ b/C4/tests/testrecords/marc21_utf8.dat @@ -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 \ No newline at end of file diff --git a/C4/tests/testrecords/marc21_utf8_combining_chars.dat b/C4/tests/testrecords/marc21_utf8_combining_chars.dat new file mode 100644 index 0000000000..5ae3740f08 --- /dev/null +++ b/C4/tests/testrecords/marc21_utf8_combining_chars.dat @@ -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 \ No newline at end of file diff --git a/C4/tests/testrecords/marcxml_utf8.xml b/C4/tests/testrecords/marcxml_utf8.xml new file mode 100644 index 0000000000..7e30aaadd4 --- /dev/null +++ b/C4/tests/testrecords/marcxml_utf8.xml @@ -0,0 +1,44 @@ + + + + 00463 a2200169 4500 + 84893 + ACLS + 19990324000000.0 + 930421s19xx xxu 00010 eng d + + 0854562702 + + + 1738 + 1738 + + + Christie, Agatha, + 1890-1976. + + + Why didn't they ask Evans? / + Agatha Christie. + + + Large print edition. + + + Large type books. + + + ONe + LP + LP Christie + + + NPL + 31000000010273 + 12.00 + 2148 + + diff --git a/C4/tests/testrecords/marcxml_utf8_entityencoded.xml b/C4/tests/testrecords/marcxml_utf8_entityencoded.xml new file mode 100644 index 0000000000..53766f357b --- /dev/null +++ b/C4/tests/testrecords/marcxml_utf8_entityencoded.xml @@ -0,0 +1,46 @@ + + + + + 00463 a2200169 4500 + 84893 + ACLS + 19990324000000.0 + 930421s19xx xxu 00010 eng d + + 0854562702 + + + 1738 + 1738 + + + Christie, Agatha, + 1890-1976. + + + Why didn't they ask Evans? / + Agatha Christie. + + + Large print edition. + + + Large type books. + + + ONe + LP + LP Christie + + + NPL + 31000000010273 + 12.00 + 2148 + + + -- 2.39.5