1 package org.marc4j.test;
\r
3 import java.io.InputStream;
\r
4 import java.util.List;
\r
6 import junit.framework.Test;
\r
7 import junit.framework.TestCase;
\r
8 import junit.framework.TestSuite;
\r
9 import junit.textui.TestRunner;
\r
11 import org.marc4j.MarcReader;
\r
12 import org.marc4j.MarcStreamReader;
\r
13 import org.marc4j.marc.ControlField;
\r
14 import org.marc4j.marc.DataField;
\r
15 import org.marc4j.marc.MarcFactory;
\r
16 import org.marc4j.marc.Record;
\r
17 import org.marc4j.marc.VariableField;
\r
19 public class RecordTest extends TestCase {
\r
21 Record record = null;
\r
23 public void setUp() throws Exception {
\r
24 InputStream input = getClass().getResourceAsStream(
\r
25 "resources/summerland.mrc");
\r
26 MarcReader reader = new MarcStreamReader(input);
\r
27 while (reader.hasNext()) {
\r
28 record = reader.next();
\r
33 public void testGetFields() {
\r
34 String cn = record.getControlNumber();
\r
35 assertEquals("12883376", cn);
\r
37 ControlField cf = record.getControlNumberField();
\r
38 assertEquals("001", cf.getTag());
\r
39 assertEquals("12883376", cf.getData());
\r
41 List fieldList = record.getVariableFields();
\r
42 assertEquals(15, fieldList.size());
\r
44 fieldList = record.getControlFields();
\r
45 assertEquals(3, fieldList.size());
\r
47 fieldList = record.getDataFields();
\r
48 assertEquals(12, fieldList.size());
\r
50 VariableField field = record.getVariableField("245");
\r
51 assertEquals("245", field.getTag());
\r
53 fieldList = record.getVariableFields("650");
\r
54 assertEquals(3, fieldList.size());
\r
56 String[] fields = { "245", "260", "300" };
\r
57 fieldList = record.getVariableFields(fields);
\r
58 assertEquals(3, fieldList.size());
\r
61 public void testFind() throws Exception {
\r
62 VariableField field = record.getVariableField("245");
\r
63 assertEquals(true, field.find("Summerland"));
\r
64 assertEquals(true, field.find("Sum*erland"));
\r
65 assertEquals(true, field.find("[Cc]habo[a-z]"));
\r
67 field = record.getVariableField("008");
\r
68 assertEquals(true, field.find("eng"));
\r
70 List result = record.find("Summerland");
\r
71 assertEquals(1, result.size());
\r
72 field = (VariableField) result.get(0);
\r
73 assertEquals("245", field.getTag());
\r
75 result = record.find("Chabon");
\r
76 assertEquals(2, result.size());
\r
78 result = record.find("100", "Chabon");
\r
79 assertEquals(1, result.size());
\r
81 String[] tags = { "100", "260", "300" };
\r
82 result = record.find(tags, "Chabon");
\r
83 assertEquals(1, result.size());
\r
85 result = record.find("040", "DLC");
\r
86 assertTrue(result.size() > 0);
\r
88 DataField df = (DataField) result.get(0);
\r
89 String agency = df.getSubfield('a').getData();
\r
90 assertTrue(agency.matches("DLC"));
\r
94 public void testCreateRecord() throws Exception {
\r
95 MarcFactory factory = MarcFactory.newInstance();
\r
96 Record record = factory.newRecord("00000cam a2200000 a 4500");
\r
97 assertEquals("00000cam a2200000 a 4500", record.getLeader().marshal());
\r
99 record.addVariableField(factory.newControlField("001", "12883376"));
\r
101 DataField df = factory.newDataField("245", '1', '0');
\r
102 df.addSubfield(factory.newSubfield('a', "Summerland /"));
\r
103 df.addSubfield(factory.newSubfield('c', "Michael Chabon."));
\r
104 record.addVariableField(df);
\r
107 public void tearDown() {
\r
111 public static Test suite() {
\r
112 return new TestSuite(RecordTest.class);
\r
115 public static void main(String args[]) {
\r
116 TestRunner.run(suite());
\r