Original 2.4
[marc4j.git] / src / org / marc4j / test / RecordTest.java
1 package org.marc4j.test;\r
2 \r
3 import java.io.InputStream;\r
4 import java.util.List;\r
5 \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
10 \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
18 \r
19 public class RecordTest extends TestCase {\r
20 \r
21     Record record = null;\r
22 \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
29         }\r
30         input.close();\r
31     }\r
32 \r
33     public void testGetFields() {\r
34         String cn = record.getControlNumber();\r
35         assertEquals("12883376", cn);\r
36 \r
37         ControlField cf = record.getControlNumberField();\r
38         assertEquals("001", cf.getTag());\r
39         assertEquals("12883376", cf.getData());\r
40 \r
41         List fieldList = record.getVariableFields();\r
42         assertEquals(15, fieldList.size());\r
43 \r
44         fieldList = record.getControlFields();\r
45         assertEquals(3, fieldList.size());\r
46 \r
47         fieldList = record.getDataFields();\r
48         assertEquals(12, fieldList.size());\r
49 \r
50         VariableField field = record.getVariableField("245");\r
51         assertEquals("245", field.getTag());\r
52 \r
53         fieldList = record.getVariableFields("650");\r
54         assertEquals(3, fieldList.size());\r
55 \r
56         String[] fields = { "245", "260", "300" };\r
57         fieldList = record.getVariableFields(fields);\r
58         assertEquals(3, fieldList.size());\r
59     }\r
60 \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
66 \r
67         field = record.getVariableField("008");\r
68         assertEquals(true, field.find("eng"));\r
69 \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
74 \r
75         result = record.find("Chabon");\r
76         assertEquals(2, result.size());\r
77 \r
78         result = record.find("100", "Chabon");\r
79         assertEquals(1, result.size());\r
80 \r
81         String[] tags = { "100", "260", "300" };\r
82         result = record.find(tags, "Chabon");\r
83         assertEquals(1, result.size());\r
84 \r
85         result = record.find("040", "DLC");\r
86         assertTrue(result.size() > 0);\r
87 \r
88         DataField df = (DataField) result.get(0);\r
89         String agency = df.getSubfield('a').getData();\r
90         assertTrue(agency.matches("DLC"));\r
91 \r
92     }\r
93 \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
98 \r
99         record.addVariableField(factory.newControlField("001", "12883376"));\r
100 \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
105     }\r
106 \r
107     public void tearDown() {\r
108         record = null;\r
109     }\r
110 \r
111     public static Test suite() {\r
112         return new TestSuite(RecordTest.class);\r
113     }\r
114 \r
115     public static void main(String args[]) {\r
116         TestRunner.run(suite());\r
117     }\r
118 }\r