marc 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/marc.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'marc/constants'
2
2
  require 'marc/record'
3
- require 'marc/field'
4
- require 'marc/control'
3
+ require 'marc/datafield'
4
+ require 'marc/controlfield'
5
5
  require 'marc/subfield'
6
6
  require 'marc/reader'
7
7
  require 'marc/writer'
@@ -1,10 +1,10 @@
1
1
  module MARC
2
2
 
3
- # A class for representing fields with a tag less than 010.
4
- # Ordinary MARC::Field objects are for fields with tags >= 010
5
- # which have indicators and subfields.
3
+ # MARC records contain control fields, each of which has a
4
+ # tag and value. Tags for control fields must be in the
5
+ # 001-009 range.
6
6
 
7
- class Control
7
+ class ControlField
8
8
 
9
9
  # the tag value (007, 008, etc)
10
10
  attr_accessor :tag
@@ -23,6 +23,17 @@ module MARC
23
23
  end
24
24
  end
25
25
 
26
+ # Two control fields are equal if their tags and values are equal.
27
+
28
+ def ==(other)
29
+ if @tag != other.tag
30
+ return false
31
+ elsif @value != other.value
32
+ return false
33
+ end
34
+ return true
35
+ end
36
+
26
37
  def to_s
27
38
  return "#{tag} #{value}"
28
39
  end
@@ -3,12 +3,11 @@ require 'marc/record'
3
3
 
4
4
  module MARC
5
5
 
6
- # MARC records are made up of fields, each of which has a tag,
7
- # indicators and subfields. If the tag is between 000-009 it is
8
- # known as a control field, and actually does not have any
9
- # indicators.
6
+ # MARC records contain data fields, each of which has a tag,
7
+ # indicators and subfields. Tags for data fields must be in
8
+ # the range 010-999.
10
9
 
11
- class Field
10
+ class DataField
12
11
  include Enumerable
13
12
 
14
13
  # The tag for the field
@@ -28,14 +27,14 @@ module MARC
28
27
  # Subfields are passed in as comma separated list of
29
28
  # MARC::Subfield objects,
30
29
  #
31
- # field = MARC::Field.new('245','0','0',
30
+ # field = MARC::DataField.new('245','0','0',
32
31
  # MARC::Subfield.new('a', 'Consilience :'),
33
32
  # MARC::Subfield.new('b', 'the unity of knowledge ',
34
33
  # MARC::Subfield.new('c', 'by Edward O. Wilson.'))
35
34
  #
36
35
  # or using a shorthand:
37
36
  #
38
- # field = MARC::Field.new('245','0','0',
37
+ # field = MARC::DataField.new('245','0','0',
39
38
  # ['a', 'Consilience :'],['b','the unity of knowledge ',
40
39
  # ['c', 'by Edward O. Wilson.'] )
41
40
 
data/lib/marc/reader.rb CHANGED
@@ -103,11 +103,11 @@ module MARC
103
103
  # remove end of field
104
104
  field_data.delete!(END_OF_FIELD)
105
105
 
106
- # add a control field or variable field
106
+ # add a control field or data field
107
107
  if tag < '010'
108
- record.append(MARC::Control.new(tag,field_data))
108
+ record.append(MARC::ControlField.new(tag,field_data))
109
109
  else
110
- field = MARC::Field.new(tag)
110
+ field = MARC::DataField.new(tag)
111
111
 
112
112
  # get all subfields
113
113
  subfields = field_data.split(SUBFIELD_INDICATOR)
data/lib/marc/subfield.rb CHANGED
@@ -20,7 +20,7 @@ module MARC
20
20
  end
21
21
 
22
22
  def to_s
23
- return "$#{code}#{value}"
23
+ return "$#{code} #{value} "
24
24
  end
25
25
  end
26
26
  end
data/lib/marc/writer.rb CHANGED
@@ -43,12 +43,12 @@ module MARC
43
43
 
44
44
  # encode the field
45
45
  field_data = ''
46
- if field.class == MARC::Field
46
+ if field.class == MARC::DataField
47
47
  field_data = field.indicator1 + field.indicator2
48
48
  for s in field.subfields
49
49
  field_data += SUBFIELD_INDICATOR + s.code + s.value
50
50
  end
51
- elsif field.class == MARC::Control
51
+ elsif field.class == MARC::ControlField
52
52
  field_data = field.value
53
53
  end
54
54
  field_data += END_OF_FIELD
@@ -24,7 +24,7 @@ module MARC
24
24
  private
25
25
 
26
26
  def strip_ns(str)
27
- return str.sub!(/^.*:/, '')
27
+ return str.sub(/^.*:/, '')
28
28
  end
29
29
 
30
30
  # will accept parse events until a record has been built up
@@ -50,10 +50,10 @@ module MARC
50
50
  case strip_ns(event[0])
51
51
  when 'controlfield'
52
52
  text = ''
53
- control_field = MARC::Control.new(attrs['tag'])
53
+ control_field = MARC::ControlField.new(attrs['tag'])
54
54
  when 'datafield'
55
55
  text = ''
56
- data_field = MARC::Field.new(attrs['tag'], attrs['ind1'],
56
+ data_field = MARC::DataField.new(attrs['tag'], attrs['ind1'],
57
57
  attrs['ind2'])
58
58
  when 'subfield'
59
59
  text = ''
@@ -20,9 +20,9 @@ module MARC
20
20
 
21
21
  @fh.write("<?xml version='1.0'?>")
22
22
 
23
- @fh.write("<marc:collection xmlns:marc='" + MARC_NS + "' " \
24
- + "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " \
25
- + "xsi:schemaLocation='" + MARC_NS + " " + MARC_XSD + "'>")
23
+ @fh.write("<collection xmlns='" + MARC_NS + "' " +
24
+ "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " +
25
+ "xsi:schemaLocation='" + MARC_NS + " " + MARC_XSD + "'>")
26
26
  end
27
27
 
28
28
 
@@ -36,7 +36,7 @@ module MARC
36
36
  # close underlying filehandle
37
37
 
38
38
  def close
39
- @fh.write("</marc:collection>")
39
+ @fh.write("</collection>")
40
40
  @fh.close
41
41
  end
42
42
 
@@ -45,38 +45,38 @@ module MARC
45
45
  # and returns a REXML::Document for the XML serialization
46
46
 
47
47
  def self.encode(record)
48
- root = "<marc:record xmlns:marc='" + MARC_NS + "'/>"
48
+ root = "<record/>"
49
49
  doc = REXML::Document.new root
50
50
 
51
51
  # MARCXML is particular about this; ILSes aren't
52
52
  record.leader[20..24] = "4500"
53
53
 
54
- leader = REXML::Element.new "marc:leader"
54
+ leader = REXML::Element.new "leader"
55
55
  leader.add_text record.leader
56
56
  doc.root.add_element leader
57
57
 
58
58
  for field in record.fields
59
- if field.class == MARC::Field
60
- dfElem = REXML::Element.new "marc:datafield"
61
- dfElem.add_attributes({
59
+ if field.class == MARC::DataField
60
+ datafield_elem = REXML::Element.new "datafield"
61
+ datafield_elem.add_attributes({
62
62
  "tag"=>field.tag,
63
63
  "ind1"=>field.indicator1,
64
64
  "ind2"=>field.indicator2
65
65
  })
66
66
 
67
67
  for subfield in field.subfields
68
- sfElem = REXML::Element.new "marc:subfield"
69
- sfElem.add_attribute("code", subfield.code)
70
- sfElem.add_text subfield.value
71
- dfElem.add_element sfElem
68
+ subfield_element = REXML::Element.new "subfield"
69
+ subfield_element.add_attribute("code", subfield.code)
70
+ subfield_element.add_text subfield.value
71
+ datafield_elem.add_element subfield_element
72
72
  end
73
73
 
74
- doc.root.add_element dfElem
75
- elsif field.class == MARC::Control
76
- cfElem = REXML::Element.new "marc:controlfield"
77
- cfElem.add_attribute("tag", field.tag)
78
- cfElem.add_text field.value
79
- doc.root.add_element cfElem
74
+ doc.root.add_element datafield_elem
75
+ elsif field.class == MARC::ControlField
76
+ control_element = REXML::Element.new "controlfield"
77
+ control_element.add_attribute("tag", field.tag)
78
+ control_element.add_text field.value
79
+ doc.root.add_element control_element
80
80
  end
81
81
  end
82
82
 
data/test/foo.xml ADDED
@@ -0,0 +1 @@
1
+ <?xml version='1.0'?><collection xmlns='http://www.loc.gov/MARC21/slim' 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'><record><leader>00925njm 22002777a 4500</leader><controlfield tag='007'>sdubumennmplu</controlfield><datafield tag='245' ind1='0' ind2='4'><subfield code='a'>The Great Ray Charles</subfield><subfield code='h'>[sound recording].</subfield></datafield></record></collection>
@@ -0,0 +1,25 @@
1
+ require 'test/unit'
2
+ require 'marc'
3
+
4
+ class TestField < Test::Unit::TestCase
5
+
6
+ def test_control
7
+ control = MARC::ControlField.new('005', 'foobarbaz')
8
+ assert_equal(control.to_s, '005 foobarbaz')
9
+ end
10
+
11
+ def test_field_as_control
12
+ assert_raise(MARC::Exception) do
13
+ # can't have a field with a tag < 010
14
+ field = MARC::DataField.new('007')
15
+ end
16
+ end
17
+
18
+ def test_control_as_field
19
+ assert_raise(MARC::Exception) do
20
+ # can't have a control with a tag > 009
21
+ f = MARC::ControlField.new('245')
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,62 @@
1
+ require 'test/unit'
2
+ require 'marc'
3
+
4
+ class TestField < Test::Unit::TestCase
5
+
6
+ def test_tag
7
+ f1 = MARC::DataField.new('100')
8
+ assert_equal('100', f1.tag)
9
+ f2 = MARC::DataField.new(tag='100')
10
+ assert_equal('100', f2.tag)
11
+ assert_equal(f1, f2)
12
+ f3 = MARC::DataField.new('245')
13
+ assert_not_equal(f1, f3)
14
+ end
15
+
16
+ def test_indicators
17
+ f1 = MARC::DataField.new('100', '0', '1')
18
+ assert_equal('0', f1.indicator1)
19
+ assert_equal('1', f1.indicator2)
20
+ f2 = MARC::DataField.new(tag='100',i1='0',i2='1')
21
+ assert_equal('0', f2.indicator1)
22
+ assert_equal('1', f2.indicator2)
23
+ assert_equal(f1, f2)
24
+ f3 = MARC::DataField.new(tag='100', i1='1', i2='1')
25
+ assert_not_equal(f1, f3)
26
+ end
27
+
28
+ def test_subfields
29
+ f1 = MARC::DataField.new('100', '0', '1',
30
+ MARC::Subfield.new('a', 'Foo'),
31
+ MARC::Subfield.new('b', 'Bar') )
32
+ assert_equal("100 01 $a Foo $b Bar ", f1.to_s)
33
+ f2 = MARC::DataField.new('100', '0', '1',
34
+ MARC::Subfield.new('a', 'Foo'),
35
+ MARC::Subfield.new('b', 'Bar') )
36
+ assert_equal(f1,f2)
37
+ f3 = MARC::DataField.new('100', '0', '1',
38
+ MARC::Subfield.new('a', 'Foo'),
39
+ MARC::Subfield.new('b', 'Bez') )
40
+ assert_not_equal(f1,f3)
41
+ end
42
+
43
+ def test_subfield_shorthand
44
+ f = MARC::DataField.new('100', '0', '1', ['a', 'Foo'], ['b', 'Bar'])
45
+ assert_equal('100 01 $a Foo $b Bar ', f.to_s)
46
+ end
47
+
48
+
49
+ def test_iterator
50
+ field = MARC::DataField.new('100', '0', '1', ['a', 'Foo'],['b', 'Bar'],
51
+ ['a', 'Bez'])
52
+ count = 0
53
+ field.each {|x| count += 1}
54
+ assert_equal(count,3)
55
+ end
56
+
57
+ def test_lookup_shorthand
58
+ f = MARC::DataField.new('100', '0', '1', ['a', 'Foo'], ['b', 'Bar'])
59
+ assert_equal(f['b'], 'Bar')
60
+ end
61
+
62
+ end
data/test/tc_record.rb CHANGED
@@ -24,26 +24,26 @@ class TestRecord < Test::Unit::TestCase
24
24
  raw = IO.read('test/one.dat')
25
25
  r = MARC::Record::new_from_marc(raw)
26
26
  assert_equal(r.class, MARC::Record)
27
- assert_equal(r.leader,'00755cam 22002414a 4500')
27
+ assert_equal(r.leader, '00755cam 22002414a 4500')
28
28
  assert_equal(r.fields.length(), 18)
29
29
  assert_equal(r.find {|f| f.tag == '245'}.to_s,
30
- '245 10 $aActivePerl with ASP and ADO /$cTobias Martinsson.')
30
+ '245 10 $a ActivePerl with ASP and ADO / $c Tobias Martinsson. ')
31
31
  end
32
32
 
33
33
  def test_decode_forgiving
34
34
  raw = IO.read('test/one.dat')
35
35
  r = MARC::Record::new_from_marc(raw, :forgiving => true)
36
36
  assert_equal(r.class, MARC::Record)
37
- assert_equal(r.leader,'00755cam 22002414a 4500')
37
+ assert_equal(r.leader, '00755cam 22002414a 4500')
38
38
  assert_equal(r.fields.length(), 18)
39
39
  assert_equal(r.find {|f| f.tag == '245'}.to_s,
40
- '245 10 $aActivePerl with ASP and ADO /$cTobias Martinsson.')
40
+ '245 10 $a ActivePerl with ASP and ADO / $c Tobias Martinsson. ')
41
41
  end
42
42
 
43
43
  def test_encode
44
44
  r1 = MARC::Record.new()
45
- r1.append(MARC::Field.new('100','2','0', ['a','Thomas, Dave']))
46
- r1.append(MARC::Field.new('245','0','0', ['a','Pragmatic Programmer']))
45
+ r1.append(MARC::DataField.new('100', '2', '0', ['a', 'Thomas, Dave']))
46
+ r1.append(MARC::DataField.new('245', '0', '0', ['a', 'Pragmatic Programmer']))
47
47
  raw = r1.to_marc()
48
48
  r2 = MARC::Record::new_from_marc(raw)
49
49
  assert_equal(r1, r2)
@@ -56,8 +56,8 @@ class TestRecord < Test::Unit::TestCase
56
56
 
57
57
  def get_record
58
58
  r = MARC::Record.new()
59
- r.append(MARC::Field.new('100', '2', '0', ['a', 'Thomas, Dave']))
60
- r.append(MARC::Field.new('245', '0', '4', ['The Pragmatic Programmer']))
59
+ r.append(MARC::DataField.new('100', '2', '0', ['a', 'Thomas, Dave']))
60
+ r.append(MARC::DataField.new('245', '0', '4', ['The Pragmatic Programmer']))
61
61
  return r
62
62
  end
63
63
 
data/test/tc_subfield.rb CHANGED
@@ -4,14 +4,14 @@ require 'marc/subfield'
4
4
  class SubfieldTest < Test::Unit::TestCase
5
5
 
6
6
  def test_ok
7
- s = MARC::Subfield.new('a','foo')
8
- assert_equal(s.code,'a')
9
- assert_equal(s.value,'foo')
7
+ s = MARC::Subfield.new('a', 'foo')
8
+ assert_equal(s.code, 'a')
9
+ assert_equal(s.value, 'foo')
10
10
  end
11
11
 
12
12
  def test_equals
13
- s1 =MARC::Subfield.new('a','foo')
14
- s2 =MARC::Subfield.new('a','foo')
13
+ s1 =MARC::Subfield.new('a', 'foo')
14
+ s2 =MARC::Subfield.new('a', 'foo')
15
15
  assert_equal(s1,s2)
16
16
  end
17
17
 
data/test/tc_writer.rb CHANGED
@@ -6,7 +6,7 @@ class WriterTest < Test::Unit::TestCase
6
6
  def test_writer()
7
7
  writer = MARC::Writer.new('test/writer.dat')
8
8
  record = MARC::Record.new()
9
- record.append(MARC::Field.new('245', '0', '1', ['a','foo']))
9
+ record.append(MARC::DataField.new('245', '0', '1', ['a', 'foo']))
10
10
  writer.write(record)
11
11
  writer.close()
12
12
 
data/test/tc_xmlreader.rb CHANGED
@@ -3,7 +3,7 @@ require 'marc'
3
3
 
4
4
  class XMLReaderTest < Test::Unit::TestCase
5
5
 
6
- def test_batch
6
+ def otest_batch
7
7
  reader = MARC::XMLReader.new('test/batch.xml')
8
8
  count = 0
9
9
  for record in reader
@@ -16,9 +16,9 @@ class XMLReaderTest < Test::Unit::TestCase
16
16
  def test_read_write
17
17
  record1 = MARC::Record.new
18
18
  record1.leader = '00925njm 22002777a 4500'
19
- record1.append MARC::Control.new('007', 'sdubumennmplu')
20
- record1.append MARC::Field.new('245','0','4',
21
- ['a','The Great Ray Charles'], ['h', '[sound recording].'])
19
+ record1.append MARC::ControlField.new('007', 'sdubumennmplu')
20
+ record1.append MARC::DataField.new('245', '0', '4',
21
+ ['a', 'The Great Ray Charles'], ['h', '[sound recording].'])
22
22
 
23
23
  writer = MARC::XMLWriter.new('test/foo.xml')
24
24
  writer.write(record1)
@@ -28,7 +28,7 @@ class XMLReaderTest < Test::Unit::TestCase
28
28
  record2 = reader.entries[0]
29
29
  assert_equal(record1, record2)
30
30
 
31
- File.unlink('test/foo.xml')
31
+ #File.unlink('test/foo.xml')
32
32
  end
33
33
  end
34
34
 
data/test/ts_marc.rb CHANGED
@@ -6,7 +6,8 @@ $LOAD_PATH.unshift("lib")
6
6
 
7
7
  require 'test/unit'
8
8
  require 'test/tc_subfield'
9
- require 'test/tc_field'
9
+ require 'test/tc_datafield'
10
+ require 'test/tc_controlfield'
10
11
  require 'test/tc_record'
11
12
  require 'test/tc_reader'
12
13
  require 'test/tc_writer'
metadata CHANGED
@@ -3,11 +3,11 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: marc
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.7
7
- date: 2006-01-02 00:00:00 -06:00
6
+ version: 0.0.8
7
+ date: 2006-01-16 00:00:00 -05:00
8
8
  summary: A ruby library for working with Machine Readable Cataloging
9
9
  require_paths:
10
- - lib
10
+ - lib
11
11
  email: ehs@pobox.com
12
12
  homepage: http://www.textualize.com/ruby_marc
13
13
  rubyforge_project:
@@ -18,45 +18,52 @@ bindir: bin
18
18
  has_rdoc: true
19
19
  required_ruby_version: !ruby/object:Gem::Version::Requirement
20
20
  requirements:
21
- -
22
- - ">"
23
- - !ruby/object:Gem::Version
24
- version: 0.0.0
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
25
24
  version:
26
25
  platform: ruby
27
26
  signing_key:
28
27
  cert_chain:
29
28
  authors:
30
- - Ed Summers
29
+ - Ed Summers
31
30
  files:
32
- - lib/marc
33
- - lib/marc.rb
34
- - lib/marc/constants.rb
35
- - lib/marc/control.rb
36
- - lib/marc/exception.rb
37
- - lib/marc/field.rb
38
- - lib/marc/reader.rb
39
- - lib/marc/record.rb
40
- - lib/marc/subfield.rb
41
- - lib/marc/writer.rb
42
- - lib/marc/xmlreader.rb
43
- - lib/marc/xmlwriter.rb
44
- - test/batch.dat
45
- - test/batch.xml
46
- - test/one.dat
47
- - test/tc_field.rb
48
- - test/tc_reader.rb
49
- - test/tc_record.rb
50
- - test/tc_subfield.rb
51
- - test/tc_writer.rb
52
- - test/tc_xmlreader.rb
53
- - test/tc_xmlwriter.rb
54
- - test/ts_marc.rb
31
+ - lib/marc
32
+ - lib/marc.rb
33
+ - lib/marc/writer.rb
34
+ - lib/marc/subfield.rb
35
+ - lib/marc/datafield.rb
36
+ - lib/marc/record.rb
37
+ - lib/marc/constants.rb
38
+ - lib/marc/xmlreader.rb
39
+ - lib/marc/xmlwriter.rb
40
+ - lib/marc/exception.rb
41
+ - lib/marc/controlfield.rb
42
+ - lib/marc/reader.rb
43
+ - test/batch.dat
44
+ - test/batch.xml
45
+ - test/tc_datafield.rb
46
+ - test/tc_reader.rb
47
+ - test/foo.xml
48
+ - test/tc_writer.rb
49
+ - test/tc_controlfield.rb
50
+ - test/tc_subfield.rb
51
+ - test/one.dat
52
+ - test/tc_xmlreader.rb
53
+ - test/tc_xmlwriter.rb
54
+ - test/tc_record.rb
55
+ - test/ts_marc.rb
55
56
  test_files:
56
- - test/ts_marc.rb
57
+ - test/ts_marc.rb
57
58
  rdoc_options: []
59
+
58
60
  extra_rdoc_files: []
61
+
59
62
  executables: []
63
+
60
64
  extensions: []
65
+
61
66
  requirements: []
62
- dependencies: []
67
+
68
+ dependencies: []
69
+
data/test/tc_field.rb DELETED
@@ -1,81 +0,0 @@
1
- require 'test/unit'
2
- require 'marc'
3
-
4
- class TestField < Test::Unit::TestCase
5
-
6
- def test_tag
7
- f1 = MARC::Field.new('100')
8
- assert_equal('100', f1.tag)
9
- f2 = MARC::Field.new(tag='100')
10
- assert_equal('100', f2.tag)
11
- assert_equal(f1, f2)
12
- f3 = MARC::Field.new('245')
13
- assert_not_equal(f1, f3)
14
- end
15
-
16
- def test_indicators
17
- f1 = MARC::Field.new('100', '0', '1')
18
- assert_equal('0', f1.indicator1)
19
- assert_equal('1', f1.indicator2)
20
- f2 = MARC::Field.new(tag='100',i1='0',i2='1')
21
- assert_equal('0', f2.indicator1)
22
- assert_equal('1', f2.indicator2)
23
- assert_equal(f1, f2)
24
- f3 = MARC::Field.new(tag='100', i1='1', i2='1')
25
- assert_not_equal(f1, f3)
26
- end
27
-
28
- def test_subfields
29
- f1 = MARC::Field.new('100', '0', '1',
30
- MARC::Subfield.new('a', 'Foo'),
31
- MARC::Subfield.new('b', 'Bar') )
32
- assert_equal("100 01 $aFoo$bBar", f1.to_s)
33
- f2 = MARC::Field.new('100', '0', '1',
34
- MARC::Subfield.new('a', 'Foo'),
35
- MARC::Subfield.new('b', 'Bar') )
36
- assert_equal(f1,f2)
37
- f3 = MARC::Field.new('100', '0', '1',
38
- MARC::Subfield.new('a', 'Foo'),
39
- MARC::Subfield.new('b', 'Bez') )
40
- assert_not_equal(f1,f3)
41
- end
42
-
43
- def test_subfield_shorthand
44
- f = MARC::Field.new('100', '0', '1', ['a', 'Foo'], ['b', 'Bar'])
45
- assert_equal('100 01 $aFoo$bBar', f.to_s)
46
- end
47
-
48
-
49
- def test_iterator
50
- field = MARC::Field.new('100','0','1', ['a', 'Foo'],['b', 'Bar'],
51
- ['a', 'Bez'])
52
- count = 0
53
- field.each {|x| count += 1}
54
- assert_equal(count,3)
55
- end
56
-
57
- def test_lookup_shorthand
58
- f = MARC::Field.new('100', '0', '1', ['a', 'Foo'], ['b', 'Bar'])
59
- assert_equal(f['b'], 'Bar')
60
- end
61
-
62
- def test_control
63
- control = MARC::Control.new('005','foobarbaz')
64
- assert_equal(control.to_s,'005 foobarbaz')
65
- end
66
-
67
- def test_field_as_control
68
- assert_raise(MARC::Exception) do
69
- # can't have a field with a tag < 010
70
- field = MARC::Field.new('007')
71
- end
72
- end
73
-
74
- def test_control_as_field
75
- assert_raise(MARC::Exception) do
76
- # can't have a control with a tag > 009
77
- f = MARC::Control.new('245')
78
- end
79
- end
80
-
81
- end