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
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
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)
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" )
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
def test_cli_format(ref_entry, ref_str): assert betterbib.pybtex_to_bibtex_string(ref_entry, "foobar") == "\n".join(ref_str)