示例#1
0
 def test_len_1(self):
     record = MarcRecord()
     self.assertEqual(len(record), 0)
     record.add(100, 'Field 100')
     self.assertEqual(len(record), 1)
     record.add(200, 'Field 200')
     self.assertEqual(len(record), 2)
示例#2
0
 def test_encode_1(self):
     record = MarcRecord()
     record.mfn = 123
     record.version = 321
     record.status = LAST
     record.add(100, 'Field100').add(200, SubField('a', 'SubA'), SubField('b', 'SubB'))
     self.assertEqual(record.encode(), ['123#32', '0#321', '100#Field100', '200#^aSubA^bSubB'])
示例#3
0
 def test_fm_2(self):
     record = MarcRecord().add(100, '', SubField('a', '100A'), SubField('b', '100B'))
     record.add(200, '', SubField('b', '200B'), SubField('c', '200C'))
     self.assertEqual('100A', record.fm(100, 'a'))
     self.assertEqual('100B', record.fm(100, 'b'))
     self.assertIsNone(record.fm(100, 'c'))
     self.assertIsNone(record.fm(200, 'a'))
     self.assertEqual('200B', record.fm(200, 'b'))
     self.assertEqual('200C', record.fm(200, 'c'))
示例#4
0
 def test_all_1(self):
     record = MarcRecord()
     record.add(100, 'Field100').add(200, 'Field200') \
         .add(300, 'Field300/1').add(300, 'Field300/2')
     self.assertEqual(len(record.fields), 4)
     self.assertEqual(len(record.all(100)), 1)
     self.assertEqual(len(record.all(200)), 1)
     self.assertEqual(len(record.all(300)), 2)
     self.assertEqual(len(record.all(400)), 0)
示例#5
0
 def test_fma_1(self):
     record = MarcRecord().add(100, 'Field 100/1').add(100, 'Field 100/2')
     record.add(200, SubField('a', 'SubA/1'), SubField('b', 'SubB/1'))
     record.add(200, SubField('a', 'SubA/2'), SubField('b', 'SubB/2'))
     self.assertEqual(record.fma(100), ['Field 100/1', 'Field 100/2'])
     self.assertEqual(record.fma(200, 'a'), ['SubA/1', 'SubA/2'])
     self.assertEqual(record.fma(200, 'b'), ['SubB/1', 'SubB/2'])
     self.assertEqual(record.fma(200, 'c'), [])
     self.assertEqual(record.fma(300), [])
     self.assertEqual(record.fma(300, 'a'), [])
示例#6
0
    def write_dummy_records(self, database: str):
        sf = SubField
        for i in range(10):
            # Создаем запись
            record = MarcRecord()
            record.database = database

            # Наполняем её полями: первый автор
            record.add(700, sf('a', 'Миронов'), sf('b', 'А. В.'),
                       sf('g', 'Алексей Владимирович'))

            # заглавие
            record.add(200, sf('a', f'Работа с ИРБИС64: версия {i}.0'),
                       sf('e', 'руководство пользователя'))

            # выходные данные
            record.add(210, sf('a', 'Иркутск'), SubField('c', 'ИРНИТУ'),
                       sf('d', '2018'))

            # рабочий лист
            record.add(920, 'PAZK')

            # Отсылаем запись на сервер.
            # Обратно приходит запись, обработанная AUTOIN.GBL
            self.connection.write_record(record)
            print(f'Write record: {i}')
            print()
示例#7
0
 def test_write_text_record(self):
     sf = SubField
     with random_text_file() as stream:
         for i in range(10):
             record = MarcRecord()
             record.add(700, sf('a', 'Миронов'), sf('b', 'А. В.'),
                        sf('g', 'Алексей Владимирович'))
             record.add(200, sf('a', f'Работа с ИРБИС64: версия {i}.0'),
                        sf('e', 'руководство пользователя'))
             record.add(210, sf('a', 'Иркутск'), SubField('c', 'ИРНИТУ'),
                        sf('d', '2018'))
             record.add(920, 'PAZK')
             write_text_record(stream, record)
示例#8
0
 def test_write_record_01(self):
     sf = SubField
     with random_binary_file() as stream:
         record = MarcRecord()
         record.add(700, sf('a', 'Миронов'), sf('b', 'А. В.'),
                    sf('g', 'Алексей Владимирович'))
         record.add(200, sf('a', f'Работа с ИРБИС64: версия 0.0'),
                    sf('e', 'руководство пользователя'))
         record.add(210, sf('a', 'Иркутск'), SubField('c', 'ИРНИТУ'),
                    sf('d', '2018'))
         record.add(920, 'PAZK')
         iso.write_record(stream, record, UTF)
     self.assertTrue(stream.name)
示例#9
0
 def test_14_write_record(self):
     record = MarcRecord()
     record.add(200, SubField('a', 'Сгенерированная запись'))
     record.add(300, 'Комментарий')
     record.add(700, SubField('a', 'Пайтон'), SubField('b', 'М.'),
                SubField('g', 'Монти'))
     record.add(910, SubField('a', '0'), SubField('b', '1'),
                SubField('c', '?'), SubField('d', 'ФКХ'))
     print('Write record')
     max_mfn = self.connection.write_record(record)
     print('New max MFN=', max_mfn, sep='')
     print(record)
     print()
示例#10
0
 def test_33_format_record(self):
     sf = SubField
     record = MarcRecord()
     record.add(700, sf('a', 'Миронов'), sf('b', 'А. В.'),
                sf('g', 'Алексей Владимирович'))
     record.add(200, sf('a', f'Работа с ИРБИС64: версия 1.0'),
                sf('e', 'руководство пользователя'))
     record.add(210, sf('a', 'Иркутск'), SubField('c', 'ИРНИТУ'),
                sf('d', '2018'))
     record.add(920, 'PAZK')
     text = self.connection.format_record('@brief', record)
     self.assertEqual(
         text, 'Миронов, Алексей Владимирович. Работа с ИРБИС64: '
         'версия 1.0 [Текст] : руководство пользователя, 2018')
示例#11
0
    def test_write_record_2(self):
        sf = SubField
        with random_binary_file() as stream:
            for i in range(10):
                record = MarcRecord()
                record.add(700, sf('a', 'Миронов'), sf('b', 'А. В.'),
                           sf('g', 'Алексей Владимирович'))
                record.add(200, sf('a', f'Работа с ИРБИС64: версия {i}.0'),
                           sf('e', 'руководство пользователя'))
                record.add(210, sf('a', 'Иркутск'), SubField('c', 'ИРНИТУ'),
                           sf('d', '2018'))
                record.add(920, 'PAZK')
                iso.write_record(stream, record, UTF)
            filename = stream.name

        with open(filename, 'rb') as fh:
            count = 0
            while True:
                record = iso.read_record(fh, UTF)
                if record is None:
                    break
                self.assertEqual(len(record.fields), 4)
                count += 1
        self.assertEqual(count, 10)
示例#12
0
 def test_bool_1(self):
     record = MarcRecord()
     self.assertFalse(bool(record))
     record.add(100, 'Field 100')
     self.assertTrue(bool(record))