예제 #1
0
def test_crossref_article0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
            'article',
            fields={
                'title': 'A Framework for Deflated and Augmented ' +
                         'Krylov Subspace Methods',
                'year': '2013'
            },
            persons={'author': [
                pybtex.database.Person('Gaul'),
                pybtex.database.Person('Liesen'),
                pybtex.database.Person('Gutknecht'),
                pybtex.database.Person('Nabben'),
                ]}
            )

    bt = source.find_unique(test_entry)
    reference = pybtex.database.Entry(
        'article',
        fields={
            'doi': u'10.1137/110820713',
            'publisher':
                u'Society for Industrial & Applied Mathematics (SIAM)',
            'title': u'A Framework for Deflated and Augmented ' +
                'Krylov Subspace Methods',
            'url': u'http://dx.doi.org/10.1137/110820713',
            'journal': u'SIAM Journal on Matrix Analysis and Applications',
            'number': u'2',
            'month': 5,
            'volume': u'34',
            'source': u'CrossRef',
            'year': 2013,
            'pages': u'495-518'
            },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Gaul, Andr\xe9'),
                pybtex.database.Person(u'Gutknecht, Martin H.'),
                pybtex.database.Person(u'Liesen, J\xf6rg'),
                pybtex.database.Person(u'Nabben, Reinhard')
                ]
            }))

    # Comparing the Entry object as a whole doesn't work, unfortunately.
    assert _bibtex_equals(bt, reference)

    # test string conversion
    betterbib.pybtex_to_bibtex_string(reference, 'ABC')
    # No assertions here yet.
    # What we'd like to do: Take the string, parse it back into a PybTeX entry,
    # and make sure it's the original. This doesn't quite work yet since
    # months are transposed from, e.g., 5, to "May" by PybTeX; see
    # <https://bitbucket.org/pybtex-devs/pybtex/issues/84/handling-of-month-year-in-bibtex-entry>.

    return
예제 #2
0
def test_crossref_article1():
    '''This entry has two very close matches.
    '''

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
            'article',
            fields={
                'title': 'A significance test for the lasso',
                'doi': '10.1214/13-AOS1175'
            },
            persons={'author': [
                pybtex.database.Person('Tibshirani')
                ]}
            )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'article',
        fields={
            'doi': u'10.1214/13-aos1175',
            'publisher': u'Institute of Mathematical Statistics',
            'title': u'A significance test for the lasso',
            'url': u'http://dx.doi.org/10.1214/13-aos1175',
            'journal': u'The Annals of Statistics',
            'number': u'2',
            'month': 4,
            'volume': u'42',
            'source': u'CrossRef',
            'year': 2014,
            'pages': u'413-468'
            },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Lockhart, Richard'),
                pybtex.database.Person(u'Taylor, Jonathan'),
                pybtex.database.Person(u'Tibshirani, Ryan J.'),
                pybtex.database.Person(u'Tibshirani, Robert'),
                ]
            }))

    # Comparing the Entry object as a whole doesn't work, unfortunately.
    assert _bibtex_equals(bt, reference)

    # test string conversion
    betterbib.pybtex_to_bibtex_string(reference, 'ABC')
    # No assertions here yet.
    # What we'd like to do: Take the string, parse it back into a PybTeX entry,
    # and make sure it's the original. This doesn't quite work yet since
    # months are transposed from, e.g., 5, to "May" by PybTeX; see
    # <https://bitbucket.org/pybtex-devs/pybtex/issues/84/handling-of-month-year-in-bibtex-entry>.

    return
예제 #3
0
def test_subtitle():
    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "article",
        fields={
            "title": "tube",
            "doi": "10.1145/2377677.2377723",
            "journal": "ACM SIGCOMM Computer Communication Review",
            "issn": "0146-4833",
        },
        persons={
            "author": [
                pybtex.database.Person("Ha, Sangtae"),
                pybtex.database.Person("Sen"),
                pybtex.database.Person("Joe-Wong"),
                pybtex.database.Person("Im"),
                pybtex.database.Person("Chiang, Mung"),
            ]
        },
    )

    reference = pybtex.database.Entry(
        "article",
        fields={
            "publisher": "Association for Computing Machinery (ACM)",
            "doi": "10.1145/2377677.2377723",
            "title": "TUBE",
            "subtitle": "time-dependent pricing for mobile data",
            "url": "http://dx.doi.org/10.1145/2377677.2377723",
            "journal": "ACM SIGCOMM Computer Communication Review",
            "issn": "0146-4833",
            "number": "4",
            "month": 9,
            "volume": "42",
            "source": "Crossref",
            "year": 2012,
            "pages": "247-258",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person("Ha, Sangtae"),
                pybtex.database.Person("Sen, Soumya"),
                pybtex.database.Person("Joe-Wong, Carlee"),
                pybtex.database.Person("Im, Youngbin"),
                pybtex.database.Person("Chiang, Mung"),
            ]
        }),
    )

    bt = source.find_unique(test_entry)
    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)
예제 #4
0
def test_crossref_article0():
    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "article",
        fields={"title": "Framework Deflation Krylov Augmented"},
        persons={
            "author": [
                pybtex.database.Person("Liesen"),
                pybtex.database.Person("Gaul"),
                pybtex.database.Person("Nabben"),
            ]
        },
    )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "article",
        fields={
            "doi": "10.1137/110820713",
            "issn": "0895-4798, 1095-7162",
            "publisher": "Society for Industrial & Applied Mathematics (SIAM)",
            "title": "A Framework for Deflated and Augmented "
            + "Krylov Subspace Methods",
            "url": "http://dx.doi.org/10.1137/110820713",
            "journal": "SIAM J. Matrix Anal. & Appl.",
            "number": "2",
            "month": 1,
            "volume": "34",
            "source": "Crossref",
            "year": 2013,
            "pages": "495-518",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict(
            {
                "author": [
                    pybtex.database.Person("Gaul, Andr\xe9"),
                    pybtex.database.Person("Gutknecht, Martin H."),
                    pybtex.database.Person("Liesen, J\xf6rg"),
                    pybtex.database.Person("Nabben, Reinhard"),
                ]
            }
        ),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True
    ) == betterbib.pybtex_to_bibtex_string(reference, "key", sort=True)

    assert (
        betterbib.tools.get_short_doi(betterbib.tools.doi_from_url(bt.fields["url"]))
        == "10/f44kd7"
    )
예제 #5
0
def test_crossref_article0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'article',
        fields={
            'title': 'Framework Deflation Krylov Augmented',
        },
        persons={
            'author': [
                pybtex.database.Person('Liesen'),
                pybtex.database.Person('Gaul'),
                pybtex.database.Person('Nabben'),
            ]
        })

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'article',
        fields={
            'doi': u'10.1137/110820713',
            'issn': u'0895-4798, 1095-7162',
            'publisher':
            u'Society for Industrial & Applied Mathematics (SIAM)',
            'title': u'A Framework for Deflated and Augmented ' +
            'Krylov Subspace Methods',
            'url': u'http://dx.doi.org/10.1137/110820713',
            'journal': u'SIAM J. Matrix Anal. & Appl.',
            'number': u'2',
            'month': 1,
            'volume': u'34',
            'source': u'Crossref',
            'year': 2013,
            'pages': u'495-518',
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Gaul, Andr\xe9'),
                pybtex.database.Person(u'Gutknecht, Martin H.'),
                pybtex.database.Person(u'Liesen, J\xf6rg'),
                pybtex.database.Person(u'Nabben, Reinhard')
            ]
        }))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    assert betterbib.tools.get_short_doi(
        betterbib.tools.doi_from_url(bt.fields['url'])) == '10/f44kd7'

    return
예제 #6
0
def test_crossref_incollection0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "incollection",
        fields={
            "title":
            "Numerical continuation, " + "and computation of normal forms"
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person(u"Beyn"),
                pybtex.database.Person(u"Champneys"),
            ]
        }),
    )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "incollection",
        fields={
            "publisher": "Elsevier",
            "doi": u"10.1016/s1874-575x(02)80025-x",
            "issn": u"1874-575X",
            "title": "Numerical Continuation, and Computation of Normal Forms",
            "url": u"http://dx.doi.org/10.1016/s1874-575x(02)80025-x",
            "booktitle": "Handbook of Dynamical Systems",
            "source": u"Crossref",
            "year": 2002,
            "pages": u"149-219",
            "isbn": u"9780444501684",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person(u"Beyn, Wolf-J\xfcrgen"),
                pybtex.database.Person(u"Champneys, Alan"),
                pybtex.database.Person(u"Doedel, Eusebius"),
                pybtex.database.Person(u"Govaerts, Willy"),
                pybtex.database.Person(u"Kuznetsov, Yuri A."),
                pybtex.database.Person(u"Sandstede, Bj\xf6rn"),
            ]
        }),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #7
0
def test_subtitle():
    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'article',
        fields={
            'title': 'tube',
            'doi': '10.1145/2377677.2377723',
            'journal': u'ACM SIGCOMM Computer Communication Review',
            'issn': '0146-4833',
        },
        persons={
            'author': [
                pybtex.database.Person('Ha, Sangtae'),
                pybtex.database.Person('Sen'),
                pybtex.database.Person('Joe-Wong'),
                pybtex.database.Person('Im'),
                pybtex.database.Person('Chiang, Mung'),
            ]
        })

    reference = pybtex.database.Entry(
        'article',
        fields={
            'publisher': u'Association for Computing Machinery (ACM)',
            'doi': u'10.1145/2377677.2377723',
            'title': u'TUBE',
            'subtitle': u'time-dependent pricing for mobile data',
            'url': u'http://dx.doi.org/10.1145/2377677.2377723',
            'journal': u'SIGCOMM Comput. Commun. Rev.',
            'issn': u'0146-4833',
            'number': u'4',
            'month': 9,
            'volume': u'42',
            'source': u'Crossref',
            'year': 2012,
            'pages': u'247',
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Ha, Sangtae'),
                pybtex.database.Person(u'Sen, Soumya'),
                pybtex.database.Person(u'Joe-Wong, Carlee'),
                pybtex.database.Person(u'Im, Youngbin'),
                pybtex.database.Person(u'Chiang, Mung')
            ]
        }))

    bt = source.find_unique(test_entry)
    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)
    return
예제 #8
0
def test_article0():

    source = betterbib.Dblp()

    test_entry = pybtex.database.Entry(
        "article",
        fields={"title": "Framework Deflated Krylov Augmented"},
        persons={
            "author": [
                pybtex.database.Person("Liesen"),
                pybtex.database.Person("Gaul"),
                pybtex.database.Person("Nabben"),
            ]
        },
    )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "article",
        fields={
            "doi": "10.1137/110820713",
            "title": "A Framework for Deflated and Augmented " +
            "Krylov Subspace Methods.",
            "url": "https://doi.org/10.1137/110820713",
            "journal": "SIAM J. Matrix Analysis Applications",
            "number": "2",
            "volume": "34",
            "source": "DBLP",
            "year": 2013,
            "pages": "495-518",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person("Gaul, Andr\xe9"),
                pybtex.database.Person("Gutknecht, Martin H."),
                pybtex.database.Person("Liesen, J\xf6rg"),
                pybtex.database.Person("Nabben, Reinhard"),
            ]
        }),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #9
0
def test_crossref_incollection0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'incollection',
        fields={
            'title':
            'Numerical continuation, ' + 'and computation of normal forms'
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Beyn'),
                pybtex.database.Person(u'Champneys'),
            ]
        }))

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'incollection',
        fields={
            'publisher': 'Elsevier',
            'doi': u'10.1016/s1874-575x(02)80025-x',
            'issn': u'1874-575X',
            'title': 'Numerical Continuation, and Computation of Normal Forms',
            'url': u'http://dx.doi.org/10.1016/s1874-575x(02)80025-x',
            'booktitle': 'Handbook of Dynamical Systems',
            'source': u'Crossref',
            'year': 2002,
            'pages': u'149-219',
            'isbn': u'9780444501684',
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Beyn, Wolf-J\xfcrgen'),
                pybtex.database.Person(u'Champneys, Alan'),
                pybtex.database.Person(u'Doedel, Eusebius'),
                pybtex.database.Person(u'Govaerts, Willy'),
                pybtex.database.Person(u'Kuznetsov, Yuri A.'),
                pybtex.database.Person(u'Sandstede, Bj\xf6rn')
            ]
        }))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #10
0
def test_article0():

    source = betterbib.Dblp()

    test_entry = pybtex.database.Entry(
        'article',
        fields={'title': 'Framework Deflated Krylov Augmented'},
        persons={
            'author': [
                pybtex.database.Person('Liesen'),
                pybtex.database.Person('Gaul'),
                pybtex.database.Person('Nabben'),
            ]
        })

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'article',
        fields={
            'doi': u'10.1137/110820713',
            'title': u'A Framework for Deflated and Augmented ' +
            'Krylov Subspace Methods.',
            'url': u'https://doi.org/10.1137/110820713',
            'journal': u'SIAM J. Matrix Analysis Applications',
            'number': u'2',
            'volume': u'34',
            'source': u'DBLP',
            'year': 2013,
            'pages': u'495-518'
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Gaul, Andr\xe9'),
                pybtex.database.Person(u'Gutknecht, Martin H.'),
                pybtex.database.Person(u'Liesen, J\xf6rg'),
                pybtex.database.Person(u'Nabben, Reinhard')
            ]
        }))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #11
0
def test_crossref_book1():
    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "book",
        fields={"title": "Matrices, Moments and Quadrature with Applications"},
        persons={
            "author": [
                pybtex.database.Person("Golub"),
                pybtex.database.Person("Meurant"),
            ]
        },
    )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "book",
        fields={
            "title": u"Matrices, Moments and Quadrature with Applications",
            "source": u"Crossref",
            "publisher": u"Princeton University Press",
            "year": 2009,
            "month": 1,
            "doi": "10.1515/9781400833887",
            "url": u"http://dx.doi.org/10.1515/9781400833887",
            "isbn": "9781400833887",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person(u"Golub, Gene H."),
                pybtex.database.Person(u"Meurant, G\xe9rard"),
            ]
        }),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #12
0
def test_crossref_techreport0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "techreport", fields={"title": "CT Scan of NASA Booster Nozzle"})

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "techreport",
        fields={
            "doi":
            u"10.2172/15014765",
            "title":
            "CT Scan of NASA Booster Nozzle",
            "url":
            u"http://dx.doi.org/10.2172/15014765",
            "month":
            7,
            "source":
            u"Crossref",
            "year":
            2004,
            "institution":
            "Office of Scientific " + "and Technical Information  (OSTI)",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person(u"Schneberk, D"),
                pybtex.database.Person(u"Perry, R"),
                pybtex.database.Person(u"Thompson, R"),
            ]
        }),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #13
0
def test_crossref_book1():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'book',
        fields={
            'title': 'Matrices, Moments and Quadrature with Applications',
        },
        persons={
            'author': [
                pybtex.database.Person('Golub'),
                pybtex.database.Person('Meurant'),
            ]
        })

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'book',
        fields={
            'title': u'Matrices, Moments and Quadrature with Applications',
            'source': u'Crossref',
            'publisher': u'Princeton University Press',
            'year': 2009,
            'month': 1,
            'doi': '10.1515/9781400833887',
            'url': u'http://dx.doi.org/10.1515/9781400833887',
            'isbn': '9781400833887',
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Golub, Gene H.'),
                pybtex.database.Person(u'Meurant, G\xe9rard'),
            ]
        }))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #14
0
def test_first_name_space():
    d = {
        "doe": pybtex.database.Entry(
            "misc", persons={"author": [pybtex.database.Person("Doe, J. J.")]},
        )
    }
    out = betterbib.pybtex_to_bibtex_string(d["doe"], "doe")
    ref = """@misc{doe,
 author = {Doe, J.J.},
}"""

    assert out == ref
예제 #15
0
def test_standard():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "misc",
        fields={
            "title": ("{STD 42}: {A} Standard for the transmission of {IP} "
                      "datagrams over experimental {Ethernet} Networks"),
            "doi":
            "10.5594/s9781614827788",
        },
    )

    reference = pybtex.database.Entry(
        "misc",
        fields={
            "title": ("{ST} 2022-7:2013 : {Seamless} Protection Switching "
                      "of {SMPTE} {ST} 2022 {IP} Datagrams"),
            "doi":
            u"10.5594/s9781614827788",
            "url":
            u"http://dx.doi.org/10.5594/s9781614827788",
            "isbn":
            "9781614827788",
            "publisher": ("The Society of Motion Picture "
                          "and Television Engineers"),
            "source":
            u"Crossref",
        },
    )

    bt = source.find_unique(test_entry)

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #16
0
def test_crossref_techreport0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'techreport', fields={'title': 'CT Scan of NASA Booster Nozzle'})

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'techreport',
        fields={
            'doi':
            u'10.2172/15014765',
            'title':
            'CT Scan of NASA Booster Nozzle',
            'url':
            u'http://dx.doi.org/10.2172/15014765',
            'month':
            7,
            'source':
            u'Crossref',
            'year':
            2004,
            'institution':
            'Office of Scientific ' + 'and Technical Information  (OSTI)'
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            'author': [
                pybtex.database.Person(u'Schneberk, D'),
                pybtex.database.Person(u'Perry, R'),
                pybtex.database.Person(u'Thompson, R'),
            ]
        }))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #17
0
def test_update():
    entry1 = pybtex.database.Entry(
        "article",
        fields={"title": "Yes", "year": 2000},
        persons={"author": [pybtex.database.Person("Doe, John")]},
    )
    entry2 = pybtex.database.Entry(
        "book",
        fields={"title": "No", "pages": "1-19"},
        persons={"author": [pybtex.database.Person("Doe, John")]},
    )
    reference = pybtex.database.Entry(
        "book",
        fields={"title": "No", "year": 2000, "pages": "1-19"},
        persons={"author": [pybtex.database.Person("Doe, John")]},
    )

    merged = betterbib.update(entry1, entry2)

    assert betterbib.pybtex_to_bibtex_string(
        merged, "key", sort=True
    ) == betterbib.pybtex_to_bibtex_string(reference, "key", sort=True)
예제 #18
0
def test_doi_only():
    source = betterbib.Crossref(prefer_long_journal_name=True)

    bt = source.get_by_doi(u"10.1137/110820713")
    reference = pybtex.database.Entry(
        "article",
        fields={
            "doi": u"10.1137/110820713",
            "issn": u"0895-4798, 1095-7162",
            "publisher":
            u"Society for Industrial & Applied Mathematics (SIAM)",
            "title": u"A Framework for Deflated and Augmented " +
            "Krylov Subspace Methods",
            "url": u"http://dx.doi.org/10.1137/110820713",
            "journal": u"SIAM Journal on Matrix Analysis and Applications",
            "number": u"2",
            "month": 1,
            "volume": u"34",
            "source": u"Crossref",
            "year": 2013,
            "pages": u"495-518",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict({
            "author": [
                pybtex.database.Person(u"Gaul, Andr\xe9"),
                pybtex.database.Person(u"Gutknecht, Martin H."),
                pybtex.database.Person(u"Liesen, J\xf6rg"),
                pybtex.database.Person(u"Nabben, Reinhard"),
            ]
        }),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #19
0
def test_crossref_book0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'book',
        fields={
            'title': 'Numerical Ordinary Differential Equations',
            'doi': '10.1002/0470868279',
        },
        persons={'author': [
            pybtex.database.Person('Butcher'),
        ]})

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        'book',
        fields={
            'doi': u'10.1002/0470868279',
            'publisher': u'John Wiley & Sons, Ltd',
            'title': u'Numerical Methods for Ordinary Differential Equations',
            'subtitle': 'Butcher/Numerical Methods',
            'url': u'http://dx.doi.org/10.1002/0470868279',
            'month': 6,
            'source': u'Crossref',
            'year': 2003,
            'isbn': '9780470868270, 9780471967583'
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict(
            {'author': [
                pybtex.database.Person(u'Butcher, J.C.'),
            ]}))

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #20
0
def test_crossref_book0():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        "book",
        fields={
            "title": "Numerical Ordinary Differential Equations",
            "doi": "10.1002/0470868279",
        },
        persons={"author": [pybtex.database.Person("Butcher")]},
    )

    bt = source.find_unique(test_entry)

    reference = pybtex.database.Entry(
        "book",
        fields={
            "doi": u"10.1002/0470868279",
            "publisher": u"John Wiley & Sons, Ltd",
            "title": u"Numerical Methods for Ordinary Differential Equations",
            "subtitle": "Butcher/Numerical Methods",
            "url": u"http://dx.doi.org/10.1002/0470868279",
            "month": 6,
            "source": u"Crossref",
            "year": 2003,
            "isbn": "9780470868270, 9780471967583",
        },
        persons=pybtex.database.OrderedCaseInsensitiveDict(
            {"author": [pybtex.database.Person(u"Butcher, J.C.")]}),
    )

    assert betterbib.pybtex_to_bibtex_string(
        bt, "key", sort=True) == betterbib.pybtex_to_bibtex_string(reference,
                                                                   "key",
                                                                   sort=True)

    return
예제 #21
0
def test_encode_doi():
    doi = "10.1007/978-1-4615-7419-4_6"
    d = {
        "karwowski": pybtex.database.Entry(
            "misc", fields=[("doi", doi), ("note", "Online; accessed 19-February-2019")]
        )
    }
    out = betterbib.pybtex_to_bibtex_string(d["karwowski"], "karwowski")

    # Split string and fetch entry with doi
    doi_entry = out.split()[3]
    # Remove braces and trailing comma
    doi_entry = doi_entry[1:-2]
    assert doi_entry == doi
예제 #22
0
def test_standard():

    source = betterbib.Crossref()

    test_entry = pybtex.database.Entry(
        'misc',
        fields={
            'title': ('{STD 42}: {A} Standard for the transmission of {IP} '
                      'datagrams over experimental {Ethernet} Networks'),
            'doi':
            '10.5594/s9781614827788',
        },
    )

    reference = pybtex.database.Entry(
        'misc',
        fields={
            'title': ('{ST} 2022-7:2013 : {Seamless} Protection Switching '
                      'of {SMPTE} {ST} 2022 {IP} Datagrams'),
            'doi':
            u'10.5594/s9781614827788',
            'url':
            u'http://dx.doi.org/10.5594/s9781614827788',
            'isbn':
            '9781614827788',
            'publisher': ('The Society of Motion Picture '
                          'and Television Engineers'),
            'source':
            u'Crossref',
        })

    bt = source.find_unique(test_entry)

    assert betterbib.pybtex_to_bibtex_string(bt, 'key', sort=True) \
        == betterbib.pybtex_to_bibtex_string(reference, 'key', sort=True)

    return
예제 #23
0
def test_encode_url():
    url = "https://www.wolframalpha.com/input/?i=integrate+from+0+to+2pi+(cos(x)+e%5E(i+*+(m+-+n)+*+x))"
    d = {
        "wolframalphai1": pybtex.database.Entry(
            "misc", fields=[("url", url), ("note", "Online; accessed 19-February-2019")]
        )
    }

    out = betterbib.pybtex_to_bibtex_string(d["wolframalphai1"], "wolframalphai1")

    # Split string and fetch entry with url
    url_entry = out.split()[3]
    # Remove braces and trailing comma
    url_entry = url_entry[1:-2]
    assert url_entry == url
예제 #24
0
def test_cli_format(ref_entry, ref_str):
    assert betterbib.pybtex_to_bibtex_string(ref_entry,
                                             "foobar") == "\n".join(ref_str)