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 assertTrue("No test data", input != null);
\r
27 MarcReader reader = new MarcStreamReader(input, "MARC-8");
\r
28 while (reader.hasNext()) {
\r
29 record = reader.next();
\r
34 public void testGetFields() {
\r
35 String cn = record.getControlNumber();
\r
36 assertEquals("12883376", cn);
\r
38 ControlField cf = record.getControlNumberField();
\r
39 assertEquals("001", cf.getTag());
\r
40 assertEquals("12883376", cf.getData());
\r
42 List<VariableField> fieldList = record.getVariableFields();
\r
43 assertEquals(15, fieldList.size());
\r
45 List<ControlField> controlList = record.getControlFields();
\r
46 assertEquals(3, controlList.size());
\r
48 List<DataField> dataList = record.getDataFields();
\r
49 assertEquals(12, dataList.size());
\r
51 VariableField field = record.getVariableField("245");
\r
52 assertEquals("245", field.getTag());
\r
54 fieldList = record.getVariableFields("650");
\r
55 assertEquals(3, fieldList.size());
\r
57 String[] fields = { "245", "260", "300" };
\r
58 fieldList = record.getVariableFields(fields);
\r
59 assertEquals(3, fieldList.size());
\r
62 @SuppressWarnings("rawtypes")
\r
63 public void testFind() throws Exception {
\r
64 VariableField field = record.getVariableField("245");
\r
65 assertEquals(true, field.find("Summerland"));
\r
66 assertEquals(true, field.find("Sum*erland"));
\r
67 assertEquals(true, field.find("[Cc]habo[a-z]"));
\r
69 field = record.getVariableField("008");
\r
70 assertEquals(true, field.find("eng"));
\r
72 List result = record.find("Summerland");
\r
73 assertEquals(1, result.size());
\r
74 field = (VariableField) result.get(0);
\r
75 assertEquals("245", field.getTag());
\r
77 result = record.find("Chabon");
\r
78 assertEquals(2, result.size());
\r
80 result = record.find("100", "Chabon");
\r
81 assertEquals(1, result.size());
\r
83 String[] tags = { "100", "260", "300" };
\r
84 result = record.find(tags, "Chabon");
\r
85 assertEquals(1, result.size());
\r
87 result = record.find("040", "DLC");
\r
88 assertTrue(result.size() > 0);
\r
90 DataField df = (DataField) result.get(0);
\r
91 String agency = df.getSubfield('a').getData();
\r
92 assertTrue(agency.matches("DLC"));
\r
96 public void testCreateRecord() throws Exception {
\r
97 MarcFactory factory = MarcFactory.newInstance();
\r
98 Record record = factory.newRecord("00000cam a2200000 a 4500");
\r
99 assertEquals("00000cam a2200000 a 4500", record.getLeader().marshal());
\r
101 record.addVariableField(factory.newControlField("001", "12883376"));
\r
103 DataField df = factory.newDataField("245", '1', '0');
\r
104 df.addSubfield(factory.newSubfield('a', "Summerland /"));
\r
105 df.addSubfield(factory.newSubfield('c', "Michael Chabon."));
\r
106 record.addVariableField(df);
\r
109 public void tearDown() {
\r
113 public static Test suite() {
\r
114 return new TestSuite(RecordTest.class);
\r
117 public static void main(String args[]) {
\r
118 TestRunner.run(suite());
\r