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<VariableField> fieldList = record.getVariableFields();
\r
42 assertEquals(15, fieldList.size());
\r
44 List<ControlField> controlList = record.getControlFields();
\r
45 assertEquals(3, controlList.size());
\r
47 List<DataField> dataList = record.getDataFields();
\r
48 assertEquals(12, dataList.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 @SuppressWarnings("rawtypes")
\r
62 public void testFind() throws Exception {
\r
63 VariableField field = record.getVariableField("245");
\r
64 assertEquals(true, field.find("Summerland"));
\r
65 assertEquals(true, field.find("Sum*erland"));
\r
66 assertEquals(true, field.find("[Cc]habo[a-z]"));
\r
68 field = record.getVariableField("008");
\r
69 assertEquals(true, field.find("eng"));
\r
71 List result = record.find("Summerland");
\r
72 assertEquals(1, result.size());
\r
73 field = (VariableField) result.get(0);
\r
74 assertEquals("245", field.getTag());
\r
76 result = record.find("Chabon");
\r
77 assertEquals(2, result.size());
\r
79 result = record.find("100", "Chabon");
\r
80 assertEquals(1, result.size());
\r
82 String[] tags = { "100", "260", "300" };
\r
83 result = record.find(tags, "Chabon");
\r
84 assertEquals(1, result.size());
\r
86 result = record.find("040", "DLC");
\r
87 assertTrue(result.size() > 0);
\r
89 DataField df = (DataField) result.get(0);
\r
90 String agency = df.getSubfield('a').getData();
\r
91 assertTrue(agency.matches("DLC"));
\r
95 public void testCreateRecord() throws Exception {
\r
96 MarcFactory factory = MarcFactory.newInstance();
\r
97 Record record = factory.newRecord("00000cam a2200000 a 4500");
\r
98 assertEquals("00000cam a2200000 a 4500", record.getLeader().marshal());
\r
100 record.addVariableField(factory.newControlField("001", "12883376"));
\r
102 DataField df = factory.newDataField("245", '1', '0');
\r
103 df.addSubfield(factory.newSubfield('a', "Summerland /"));
\r
104 df.addSubfield(factory.newSubfield('c', "Michael Chabon."));
\r
105 record.addVariableField(df);
\r
108 public void tearDown() {
\r
112 public static Test suite() {
\r
113 return new TestSuite(RecordTest.class);
\r
116 public static void main(String args[]) {
\r
117 TestRunner.run(suite());
\r