Exemplo n.º 1
0
    def test_Collection(self):
        from pyglottolog.monsterlib._bibfiles_db import Database

        if not PY2:  # pragma: no cover
            return

        db = self.tmp_path('test.sqlite')
        with capture(self.api.bibfiles.to_sqlite, db) as out:
            self.assertIn('ENTRYTYPE', out)
        with capture(self.api.bibfiles.to_sqlite, db) as out:
            pass
        with capture(self.api.bibfiles.to_sqlite, db, rebuild=True) as out:
            pass

        db = Database(db, self.api.bibfiles)
        with capture(db.recompute, reload_priorities=self.api.bibfiles) as out:
            self.assertEqual(len(out.splitlines()), 34)
        with capture(db.is_uptodate, self.api.bibfiles[1:],
                     verbose=True) as out:
            self.assertEqual(len(out.splitlines()), 3)
        db.to_bibfile(self.tmp_path('out.bib'))
        db.to_csvfile(self.tmp_path('out.csv'))
        db.to_replacements(self.tmp_path('out.json'))
        self.assertEqual(db.to_hhmapping(), {'s:Karang:Tati-Harzani': 41999})
        with capture(db.trickle) as out:
            self.assertIn('2 changed 1 added in a', out)
        key, (entrytype, fields) = db[('b.bib', 'arakawa97')]
        self.assertEqual(entrytype, 'article')
        self.assertEqual(fields['volume'], '16')
        with capture(db.stats) as out:
            pass

        for attr in ['splits', 'merges', 'identified', 'combined']:
            with capture(getattr(db, 'show_' + attr)) as out:
                pass