Beispiel #1
0
class WorldScientificTests(unittest.TestCase):
    """Test WorldScientific package."""
    def setUp(self):
        self.ws = WorldScientific(journal_mappings)
        self.ws.document = parse(join(dirname(folder), ws_test_record))

    def test_abstract(self):
        abstract = (
            u"<p><roman>CH</roman><sub>3</sub><roman>NH</roman><sub>3</sub><roman>PbX</roman>(<roman>X</roman> = <roman>Br</roman>,"
            u" <roman>I</roman>, <roman>Cl</roman>) perovskites have recently been used as light absorbers in hybrid organic-inorganic"
            u" solid-state solar cells, with efficiencies above 15%. To date, it is essential to add Lithium bis(Trifluoromethanesulfonyl)Imide"
            u" (<roman>LiTFSI</roman>) to the hole transport materials (HTM) to get a higher conductivity. However, the detrimental effect of high"
            u" <roman>LiTFSI</roman> concentration on the charge transport, DOS in the conduction band of the <roman>TiO</roman><sub>2</sub> substrate"
            u" and device stability results in an overall compromise for a satisfactory device. Using a higher mobility hole conductor to avoid lithium"
            u" salt is an interesting alternative. Herein, we successfully made an efficient perovskite solar cell by applying a hole conductor PTAA"
            u" (Poly[bis(4-phenyl) (2,4,6-trimethylphenyl)-amine]) in the absence of <roman>LiTFSI</roman>. Under AM 1.5 illumination of 100 mW/cm<sup>2</sup>,"
            u" an efficiency of 10.9% was achieved, which is comparable to the efficiency of 12.3% with the addition of 1.3 mM <roman>LiTFSI</roman>."
            u" An unsealed device without <roman>Li</roman><sup>+</sup> shows interestingly a promising stability.</p>"
        )
        self.assertEqual(self.ws._get_abstract(), abstract)

    def test_journal(self):
        self.assertEqual(self.ws._get_journal(), 'NANO')

    def test_publisher(self):
        self.assertEqual(self.ws._get_publisher(),
                         'World Scientific Publishing Company')

    def test_date(self):
        self.assertEqual(self.ws._get_date(), '2014-06-05')

    def test_title(self):
        title = (
            u'HIGH-EFFICIENT SOLID-STATE PEROVSKITE SOLAR CELL WITHOUT LITHIUM SALT IN THE HOLE TRANSPORT MATERIAL',
            '', [])
        self.assertEqual(self.ws._get_title(), title)

    def test_doi(self):
        self.assertEqual(self.ws._get_doi(), u'10.1142/S1793292014400013')

    def test_page_count(self):
        self.assertEqual(self.ws._get_page_count(), u'7')

    def test_authors(self):
        authors = [
            ('Bi, Dongqin', [
                'Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden'
            ], [], []),
            ('Boschloo, Gerrit', [
                'Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden'
            ], [], []),
            ('Hagfeldt, Anders', [
                'Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden',
                'School of Chemical Engineering, Sungkyunkwan University, Suwon 440-746, Korea'
            ], ['*****@*****.**'], ['for the Belle Collaboration'])
        ]
        self.assertEqual(self.ws._get_authors(), authors)

    def test_pacscodes(self):
        self.assertEqual(self.ws._get_pacscodes(), [])

    def test_subject(self):
        self.assertEqual(self.ws._get_subject(), '')

    def test_copyright(self):
        self.assertEqual(self.ws._get_copyright(),
                         ('World Scientific Publishing Company', '2014', ''))

    def test_publication_information(self):
        publication_information = ('NANO', '9', '05', '2014', '2014-06-05',
                                   u'10.1142/S1793292014400013', '1440001', '',
                                   '')
        self.assertEqual(self.ws._get_publication_information(),
                         publication_information)

    def test_keywords(self):
        self.assertEqual(
            self.ws._get_keywords(),
            ['Perovskite CH 3 NH 3 PbI 3', 'solar cell', 'lithium'])

    def test_article_type(self):
        self.assertEqual(self.ws._get_article_type(), 'research-article')

    def test_related_article(self):
        self.ws.document = parse(join(dirname(folder), ws_erratum_test_record))
        related_article = '10.1142/S0129183108012303'
        self.assertEqual(self.ws._get_related_article(), related_article)

    def test_get_record(self):
        source_file = join(dirname(folder), ws_test_record)
        marc_file = join(dirname(folder), ws_output)
        xml = self.ws.get_record(source_file)
        with open(marc_file) as marc:
            result = marc.read()
        self.assertEqual(xml.strip(), result.strip())

        source_file_erratum = join(dirname(folder), ws_erratum_test_record)
        marc_file_erratum = join(dirname(folder), ws_erratum_output)
        erratum_xml = self.ws.get_record(source_file_erratum)
        with open(marc_file_erratum) as marc:
            result = marc.read()
        self.assertEqual(erratum_xml.strip(), result.strip())
class WorldScientificTests(unittest.TestCase):
    def setUp(self):
        self.ws = WorldScientific(journal_mappings)
        self.ws.document = parse(join(dirname(folder), ws_test_record))

    def test_abstract(self):
        abstract = (
            u"<p><roman>CH</roman><sub>3</sub><roman>NH</roman><sub>3</sub><roman>PbX</roman>(<roman>X</roman> = <roman>Br</roman>,"
            u" <roman>I</roman>, <roman>Cl</roman>) perovskites have recently been used as light absorbers in hybrid organic-inorganic"
            u" solid-state solar cells, with efficiencies above 15%. To date, it is essential to add Lithium bis(Trifluoromethanesulfonyl)Imide"
            u" (<roman>LiTFSI</roman>) to the hole transport materials (HTM) to get a higher conductivity. However, the detrimental effect of high"
            u" <roman>LiTFSI</roman> concentration on the charge transport, DOS in the conduction band of the <roman>TiO</roman><sub>2</sub> substrate"
            u" and device stability results in an overall compromise for a satisfactory device. Using a higher mobility hole conductor to avoid lithium"
            u" salt is an interesting alternative. Herein, we successfully made an efficient perovskite solar cell by applying a hole conductor PTAA"
            u" (Poly[bis(4-phenyl) (2,4,6-trimethylphenyl)-amine]) in the absence of <roman>LiTFSI</roman>. Under AM 1.5 illumination of 100 mW/cm<sup>2</sup>,"
            u" an efficiency of 10.9% was achieved, which is comparable to the efficiency of 12.3% with the addition of 1.3 mM <roman>LiTFSI</roman>."
            u" An unsealed device without <roman>Li</roman><sup>+</sup> shows interestingly a promising stability.</p>")
        self.assertEqual(self.ws._get_abstract(), abstract)

    def test_journal(self):
        self.assertEqual(self.ws._get_journal(), 'NANO')

    def test_publisher(self):
        self.assertEqual(self.ws._get_publisher(), 'World Scientific Publishing Company')

    def test_date(self):
        self.assertEqual(self.ws._get_date(), '2014-06-05')

    def test_title(self):
        title = (u'HIGH-EFFICIENT SOLID-STATE PEROVSKITE SOLAR CELL WITHOUT LITHIUM SALT IN THE HOLE TRANSPORT MATERIAL',
                 '', [])
        self.assertEqual(self.ws._get_title(), title)

    def test_doi(self):
        self.assertEqual(self.ws._get_doi(), u'10.1142/S1793292014400013')

    def test_page_count(self):
        self.assertEqual(self.ws._get_page_count(), u'7')

    def test_authors(self):
        authors = [('Bi, Dongqin',
                    ['Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden'],
                    []),
                   ('Boschloo, Gerrit',
                    ['Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden'],
                    []),
                   ('Hagfeldt, Anders',
                    ['Department of Chemistry-Angstrom Laboratory, Uppsala University, Box 532, SE 751 20 Uppsala, Sweden',
                     'School of Chemical Engineering, Sungkyunkwan University, Suwon 440-746, Korea'],
                    ['*****@*****.**'])
                   ]
        self.assertEqual(self.ws._get_authors(), authors)

    def test_pacscodes(self):
        self.assertEqual(self.ws._get_pacscodes(), [])

    def test_subject(self):
        self.assertEqual(self.ws._get_subject(), '')

    def test_copyright(self):
        self.assertEqual(self.ws._get_copyright(), ('World Scientific Publishing Company', '2014', ''))

    def test_publication_information(self):
        publication_information = ('NANO',
                                   '9',
                                   '05',
                                   '2014',
                                   '2014-06-05',
                                   u'10.1142/S1793292014400013',
                                   '1440001',
                                   '',
                                   '')
        self.assertEqual(self.ws._get_publication_information(),
                         publication_information)

    def test_keywords(self):
        self.assertEqual(self.ws._get_keywords(), ['Perovskite CH 3 NH 3 PbI 3', 'solar cell', 'lithium'])

    def test_article_type(self):
        self.assertEqual(self.ws._get_article_type(), 'research-article')

    def test_related_article(self):
        self.ws.document = parse(join(dirname(folder), ws_erratum_test_record))
        related_article = '10.1142/S0129183108012303'
        self.assertEqual(self.ws._get_related_article(), related_article)

    def test_get_record(self):
        source_file = join(dirname(folder), ws_test_record)
        marc_file = join(dirname(folder), ws_output)
        with open(marc_file) as marc:
            result = marc.read()
        self.assertEqual(self.ws.get_record(source_file), result)
        source_file_erratum = join(dirname(folder), ws_erratum_test_record)
        marc_file_erratum = join(dirname(folder), ws_erratum_output)
        with open(marc_file_erratum) as marc:
            result = marc.read()
        self.assertEqual(self.ws.get_record(source_file_erratum), result)