bug 7661: Moving C4::tests to unit tests
authorPaul Poulain <paul.poulain@biblibre.com>
Tue, 13 Mar 2012 17:07:54 +0000 (18:07 +0100)
committerPaul Poulain <paul.poulain@biblibre.com>
Tue, 13 Mar 2012 17:07:54 +0000 (18:07 +0100)
16 files changed:
C4/tests/Record_test.pl [deleted file]
C4/tests/testrecords/marc21_marc8.dat [deleted file]
C4/tests/testrecords/marc21_marc8_combining_chars.dat [deleted file]
C4/tests/testrecords/marc21_marc8_errors.dat [deleted file]
C4/tests/testrecords/marc21_utf8.dat [deleted file]
C4/tests/testrecords/marc21_utf8_combining_chars.dat [deleted file]
C4/tests/testrecords/marcxml_utf8.xml [deleted file]
C4/tests/testrecords/marcxml_utf8_entityencoded.xml [deleted file]
t/db_dependent/Record/Record.t [new file with mode: 0755]
t/db_dependent/Record/testrecords/marc21_marc8.dat [new file with mode: 0644]
t/db_dependent/Record/testrecords/marc21_marc8_combining_chars.dat [new file with mode: 0644]
t/db_dependent/Record/testrecords/marc21_marc8_errors.dat [new file with mode: 0644]
t/db_dependent/Record/testrecords/marc21_utf8.dat [new file with mode: 0644]
t/db_dependent/Record/testrecords/marc21_utf8_combining_chars.dat [new file with mode: 0644]
t/db_dependent/Record/testrecords/marcxml_utf8.xml [new file with mode: 0644]
t/db_dependent/Record/testrecords/marcxml_utf8_entityencoded.xml [new file with mode: 0644]

diff --git a/C4/tests/Record_test.pl b/C4/tests/Record_test.pl
deleted file mode 100755 (executable)
index f7a65ab..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/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.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-#
-use strict;
-use warnings;
-
-# 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
-
-
-=cut
diff --git a/C4/tests/testrecords/marc21_marc8.dat b/C4/tests/testrecords/marc21_marc8.dat
deleted file mode 100644 (file)
index ac1f8dd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-00463     2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
diff --git a/C4/tests/testrecords/marc21_marc8_combining_chars.dat b/C4/tests/testrecords/marc21_marc8_combining_chars.dat
deleted file mode 100644 (file)
index 0991ec9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-01442cam  2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056\1eocm11030895 \1eOCoLC\1e20060516100102.0\1e840720s1984    ne       b    001 0 eng  \1e  \1fa   83048926 \1e  \1faDLC\1fcDLC\1fdMUQ\1fdNLGGC\1e  \1faB8443186\1f2bccb\1e  \1fa0800606035 (Fortress Press) :\1fc$35.95\1e\1faNLGGC\1fb840375166\1e00\1faBM485\1fb.L57 1984 vol. 2\1e00\1fa296.1 s\1fa296.1\1f219\1e  \1fa11.37\1f2bcl\1e\1fa296.1\1fbST66 \1e  \1faWN3\1e00\1faJewish writings of the Second Temple period :\1fbApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /\1fcedited by Michael E. Stone.\1e  \1faAssen, Netherlands :\1fbVan Gorcum ;\1faPhiladelphia :\1fbFortress Press,\1fc1984.\1e  \1faxxiii, 697 p. ;\1fc25 cm.\1e 0\1faCompendia rerum Iudaicarum ad Novum Testamentum.\1fnSection 2,\1fpLiterature of the Jewish people in the period of the Second Temple and the Talmud ;\1fv2\1e  \1faBibliography: p. 603-653.\1e  \1faIncludes indexes.\1e 0\1faJewish religious literature\1fxHistory and criticism.\1e 0\1faJudaism\1fxHistory\1fyPost-exilic period, 586 B.C.-210 A.D.\1fxSources.\1e 6\1faLittâerature religieuse juive\1fxHistoire et critique.\1e17\1faOude Testament.\1f2gtt\1e17\1faApocriefen.\1f2gtt\1e17\1faDode-Zeerollen.\1f2gtt\1e\1faStone, Michael E.,\1fd1938-\1e  \1fk296.1 ST66\1e  \1faC0\1fbWN3\1e\1d
diff --git a/C4/tests/testrecords/marc21_marc8_errors.dat b/C4/tests/testrecords/marc21_marc8_errors.dat
deleted file mode 100644 (file)
index f7ea2aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-00462     2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
diff --git a/C4/tests/testrecords/marc21_utf8.dat b/C4/tests/testrecords/marc21_utf8.dat
deleted file mode 100644 (file)
index 0061c84..0000000
+++ /dev/null
@@ -1 +0,0 @@
-00463    a2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
\ 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
deleted file mode 100644 (file)
index 5ae3740..0000000
+++ /dev/null
@@ -1 +0,0 @@
-01442cam a2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056\1eocm11030895 \1eOCoLC\1e20060516100102.0\1e840720s1984    ne       b    001 0 eng  \1e  \1fa   83048926 \1e  \1faDLC\1fcDLC\1fdMUQ\1fdNLGGC\1e  \1faB8443186\1f2bccb\1e  \1fa0800606035 (Fortress Press) :\1fc$35.95\1e\1faNLGGC\1fb840375166\1e00\1faBM485\1fb.L57 1984 vol. 2\1e00\1fa296.1 s\1fa296.1\1f219\1e  \1fa11.37\1f2bcl\1e\1fa296.1\1fbST66 \1e  \1faWN3\1e00\1faJewish writings of the Second Temple period :\1fbApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /\1fcedited by Michael E. Stone.\1e  \1faAssen, Netherlands :\1fbVan Gorcum ;\1faPhiladelphia :\1fbFortress Press,\1fc1984.\1e  \1faxxiii, 697 p. ;\1fc25 cm.\1e 0\1faCompendia rerum Iudaicarum ad Novum Testamentum.\1fnSection 2,\1fpLiterature of the Jewish people in the period of the Second Temple and the Talmud ;\1fv2\1e  \1faBibliography: p. 603-653.\1e  \1faIncludes indexes.\1e 0\1faJewish religious literature\1fxHistory and criticism.\1e 0\1faJudaism\1fxHistory\1fyPost-exilic period, 586 B.C.-210 A.D.\1fxSources.\1e 6\1faLittérature religieuse juive\1fxHistoire et critique.\1e17\1faOude Testament.\1f2gtt\1e17\1faApocriefen.\1f2gtt\1e17\1faDode-Zeerollen.\1f2gtt\1e\1faStone, Michael E.,\1fd1938-\1e  \1fk296.1 ST66\1e  \1faC0\1fbWN3\1e\1d
\ No newline at end of file
diff --git a/C4/tests/testrecords/marcxml_utf8.xml b/C4/tests/testrecords/marcxml_utf8.xml
deleted file mode 100644 (file)
index 7e30aaa..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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>
diff --git a/C4/tests/testrecords/marcxml_utf8_entityencoded.xml b/C4/tests/testrecords/marcxml_utf8_entityencoded.xml
deleted file mode 100644 (file)
index 53766f3..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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>
diff --git a/t/db_dependent/Record/Record.t b/t/db_dependent/Record/Record.t
new file mode 100755 (executable)
index 0000000..d3f4337
--- /dev/null
@@ -0,0 +1,141 @@
+#!/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.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+#
+use strict;
+use warnings;
+
+# 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
+
+
+=cut
diff --git a/t/db_dependent/Record/testrecords/marc21_marc8.dat b/t/db_dependent/Record/testrecords/marc21_marc8.dat
new file mode 100644 (file)
index 0000000..ac1f8dd
--- /dev/null
@@ -0,0 +1 @@
+00463     2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
diff --git a/t/db_dependent/Record/testrecords/marc21_marc8_combining_chars.dat b/t/db_dependent/Record/testrecords/marc21_marc8_combining_chars.dat
new file mode 100644 (file)
index 0000000..0991ec9
--- /dev/null
@@ -0,0 +1 @@
+01442cam  2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056\1eocm11030895 \1eOCoLC\1e20060516100102.0\1e840720s1984    ne       b    001 0 eng  \1e  \1fa   83048926 \1e  \1faDLC\1fcDLC\1fdMUQ\1fdNLGGC\1e  \1faB8443186\1f2bccb\1e  \1fa0800606035 (Fortress Press) :\1fc$35.95\1e\1faNLGGC\1fb840375166\1e00\1faBM485\1fb.L57 1984 vol. 2\1e00\1fa296.1 s\1fa296.1\1f219\1e  \1fa11.37\1f2bcl\1e\1fa296.1\1fbST66 \1e  \1faWN3\1e00\1faJewish writings of the Second Temple period :\1fbApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /\1fcedited by Michael E. Stone.\1e  \1faAssen, Netherlands :\1fbVan Gorcum ;\1faPhiladelphia :\1fbFortress Press,\1fc1984.\1e  \1faxxiii, 697 p. ;\1fc25 cm.\1e 0\1faCompendia rerum Iudaicarum ad Novum Testamentum.\1fnSection 2,\1fpLiterature of the Jewish people in the period of the Second Temple and the Talmud ;\1fv2\1e  \1faBibliography: p. 603-653.\1e  \1faIncludes indexes.\1e 0\1faJewish religious literature\1fxHistory and criticism.\1e 0\1faJudaism\1fxHistory\1fyPost-exilic period, 586 B.C.-210 A.D.\1fxSources.\1e 6\1faLittâerature religieuse juive\1fxHistoire et critique.\1e17\1faOude Testament.\1f2gtt\1e17\1faApocriefen.\1f2gtt\1e17\1faDode-Zeerollen.\1f2gtt\1e\1faStone, Michael E.,\1fd1938-\1e  \1fk296.1 ST66\1e  \1faC0\1fbWN3\1e\1d
diff --git a/t/db_dependent/Record/testrecords/marc21_marc8_errors.dat b/t/db_dependent/Record/testrecords/marc21_marc8_errors.dat
new file mode 100644 (file)
index 0000000..f7ea2aa
--- /dev/null
@@ -0,0 +1 @@
+00462     2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
diff --git a/t/db_dependent/Record/testrecords/marc21_utf8.dat b/t/db_dependent/Record/testrecords/marc21_utf8.dat
new file mode 100644 (file)
index 0000000..0061c84
--- /dev/null
@@ -0,0 +1 @@
+00463    a2200169   4500001000600000003000500006005001700011008004100028020001500069090001500084100003400099245005100133250002500184650002200209942002500231952003700256\1e84893\1eACLS\1e19990324000000.0\1e930421s19xx    xxu           00010 eng d\1e  \1fa0854562702\1e  \1fc1738\1fd1738\1e\1faChristie, Agatha,\1fd1890-1976.\1e10\1faWhy didn't they ask Evans? /\1fcAgatha Christie.\1e  \1faLarge print edition.\1e 0\1faLarge type books.\1e  \1faONe\1fcLP\1fkLP Christie\1e  \1fbNPL\1fp31000000010273\1fr12.00\1fu2148\1e\1d
\ No newline at end of file
diff --git a/t/db_dependent/Record/testrecords/marc21_utf8_combining_chars.dat b/t/db_dependent/Record/testrecords/marc21_utf8_combining_chars.dat
new file mode 100644 (file)
index 0000000..5ae3740
--- /dev/null
@@ -0,0 +1 @@
+01442cam a2200373 a 4500001001300000003000600013005001700019008004100036010001700077040002500094016001900119020004200138029002100180050002800201082002300229084001500252092001700267049000800284245015300292260007900445300002800524440015300552500003000705500002200735650005600757650007000813650005700883650002500940650002100965650002500986700003001011942001501041994001201056\1eocm11030895 \1eOCoLC\1e20060516100102.0\1e840720s1984    ne       b    001 0 eng  \1e  \1fa   83048926 \1e  \1faDLC\1fcDLC\1fdMUQ\1fdNLGGC\1e  \1faB8443186\1f2bccb\1e  \1fa0800606035 (Fortress Press) :\1fc$35.95\1e\1faNLGGC\1fb840375166\1e00\1faBM485\1fb.L57 1984 vol. 2\1e00\1fa296.1 s\1fa296.1\1f219\1e  \1fa11.37\1f2bcl\1e\1fa296.1\1fbST66 \1e  \1faWN3\1e00\1faJewish writings of the Second Temple period :\1fbApocrypha, Pseudepigrapha, Qumran, sectarian writings, Philo, Josephus /\1fcedited by Michael E. Stone.\1e  \1faAssen, Netherlands :\1fbVan Gorcum ;\1faPhiladelphia :\1fbFortress Press,\1fc1984.\1e  \1faxxiii, 697 p. ;\1fc25 cm.\1e 0\1faCompendia rerum Iudaicarum ad Novum Testamentum.\1fnSection 2,\1fpLiterature of the Jewish people in the period of the Second Temple and the Talmud ;\1fv2\1e  \1faBibliography: p. 603-653.\1e  \1faIncludes indexes.\1e 0\1faJewish religious literature\1fxHistory and criticism.\1e 0\1faJudaism\1fxHistory\1fyPost-exilic period, 586 B.C.-210 A.D.\1fxSources.\1e 6\1faLittérature religieuse juive\1fxHistoire et critique.\1e17\1faOude Testament.\1f2gtt\1e17\1faApocriefen.\1f2gtt\1e17\1faDode-Zeerollen.\1f2gtt\1e\1faStone, Michael E.,\1fd1938-\1e  \1fk296.1 ST66\1e  \1faC0\1fbWN3\1e\1d
\ No newline at end of file
diff --git a/t/db_dependent/Record/testrecords/marcxml_utf8.xml b/t/db_dependent/Record/testrecords/marcxml_utf8.xml
new file mode 100644 (file)
index 0000000..7e30aaa
--- /dev/null
@@ -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>
diff --git a/t/db_dependent/Record/testrecords/marcxml_utf8_entityencoded.xml b/t/db_dependent/Record/testrecords/marcxml_utf8_entityencoded.xml
new file mode 100644 (file)
index 0000000..53766f3
--- /dev/null
@@ -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>