summaryrefslogtreecommitdiff
path: root/examples/test_bibparse.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/test_bibparse.py')
-rw-r--r--examples/test_bibparse.py221
1 files changed, 131 insertions, 90 deletions
diff --git a/examples/test_bibparse.py b/examples/test_bibparse.py
index 12e416e..339fd7c 100644
--- a/examples/test_bibparse.py
+++ b/examples/test_bibparse.py
@@ -5,158 +5,199 @@ from pyparsing import ParseException
from .btpyparse import Macro
from . import btpyparse as bp
+
class TestBibparse(unittest.TestCase):
def test_names(self):
# check various types of names
# All names can contains alphas, but not some special chars
- bad_chars = '"#%\'(),={}'
- for name_type, dig1f in ((bp.macro_def, False),
- (bp.field_name, False),
- (bp.entry_type, False),
- (bp.cite_key, True)):
- if dig1f: # can start with digit
- self.assertEqual(name_type.parseString('2t')[0], '2t')
+ bad_chars = "\"#%'(),={}"
+ for name_type, dig1f in (
+ (bp.macro_def, False),
+ (bp.field_name, False),
+ (bp.entry_type, False),
+ (bp.cite_key, True),
+ ):
+ if dig1f: # can start with digit
+ self.assertEqual(name_type.parseString("2t")[0], "2t")
else:
- self.assertRaises(ParseException, name_type.parseString, '2t')
+ self.assertRaises(ParseException, name_type.parseString, "2t")
# All of the names cannot contain some characters
for char in bad_chars:
self.assertRaises(ParseException, name_type.parseString, char)
# standard strings all OK
- self.assertEqual(name_type.parseString('simple_test')[0], 'simple_test')
+ self.assertEqual(name_type.parseString("simple_test")[0], "simple_test")
# Test macro ref
mr = bp.macro_ref
# can't start with digit
- self.assertRaises(ParseException, mr.parseString, '2t')
+ self.assertRaises(ParseException, mr.parseString, "2t")
for char in bad_chars:
self.assertRaises(ParseException, mr.parseString, char)
- self.assertEqual(mr.parseString('simple_test')[0].name, 'simple_test')
+ self.assertEqual(mr.parseString("simple_test")[0].name, "simple_test")
def test_numbers(self):
- self.assertEqual(bp.number.parseString('1066')[0], '1066')
- self.assertEqual(bp.number.parseString('0')[0], '0')
- self.assertRaises(ParseException, bp.number.parseString, '-4')
- self.assertRaises(ParseException, bp.number.parseString, '+4')
- self.assertRaises(ParseException, bp.number.parseString, '.4')
+ self.assertEqual(bp.number.parseString("1066")[0], "1066")
+ self.assertEqual(bp.number.parseString("0")[0], "0")
+ self.assertRaises(ParseException, bp.number.parseString, "-4")
+ self.assertRaises(ParseException, bp.number.parseString, "+4")
+ self.assertRaises(ParseException, bp.number.parseString, ".4")
# something point something leaves a trailing .4 unmatched
- self.assertEqual(bp.number.parseString('0.4')[0], '0')
-
+ self.assertEqual(bp.number.parseString("0.4")[0], "0")
def test_parse_string(self):
# test string building blocks
- self.assertEqual(bp.chars_no_quotecurly.parseString('x')[0], 'x')
- self.assertEqual(bp.chars_no_quotecurly.parseString("a string")[0], 'a string')
- self.assertEqual(bp.chars_no_quotecurly.parseString('a "string')[0], 'a ')
- self.assertEqual(bp.chars_no_curly.parseString('x')[0], 'x')
- self.assertEqual(bp.chars_no_curly.parseString("a string")[0], 'a string')
- self.assertEqual(bp.chars_no_curly.parseString('a {string')[0], 'a ')
- self.assertEqual(bp.chars_no_curly.parseString('a }string')[0], 'a ')
+ self.assertEqual(bp.chars_no_quotecurly.parseString("x")[0], "x")
+ self.assertEqual(bp.chars_no_quotecurly.parseString("a string")[0], "a string")
+ self.assertEqual(bp.chars_no_quotecurly.parseString('a "string')[0], "a ")
+ self.assertEqual(bp.chars_no_curly.parseString("x")[0], "x")
+ self.assertEqual(bp.chars_no_curly.parseString("a string")[0], "a string")
+ self.assertEqual(bp.chars_no_curly.parseString("a {string")[0], "a ")
+ self.assertEqual(bp.chars_no_curly.parseString("a }string")[0], "a ")
# test more general strings together
for obj in (bp.curly_string, bp.string, bp.field_value):
- self.assertEqual(obj.parseString('{}').asList(), [])
+ self.assertEqual(obj.parseString("{}").asList(), [])
self.assertEqual(obj.parseString('{a "string}')[0], 'a "string')
- self.assertEqual(obj.parseString('{a {nested} string}').asList(),
- ['a ', ['nested'], ' string'])
- self.assertEqual(obj.parseString('{a {double {nested}} string}').asList(),
- ['a ', ['double ', ['nested']], ' string'])
+ self.assertEqual(
+ obj.parseString("{a {nested} string}").asList(),
+ ["a ", ["nested"], " string"],
+ )
+ self.assertEqual(
+ obj.parseString("{a {double {nested}} string}").asList(),
+ ["a ", ["double ", ["nested"]], " string"],
+ )
for obj in (bp.quoted_string, bp.string, bp.field_value):
self.assertEqual(obj.parseString('""').asList(), [])
- self.assertEqual(obj.parseString('"a string"')[0], 'a string')
- self.assertEqual(obj.parseString('"a {nested} string"').asList(),
- ['a ', ['nested'], ' string'])
- self.assertEqual(obj.parseString('"a {double {nested}} string"').asList(),
- ['a ', ['double ', ['nested']], ' string'])
+ self.assertEqual(obj.parseString('"a string"')[0], "a string")
+ self.assertEqual(
+ obj.parseString('"a {nested} string"').asList(),
+ ["a ", ["nested"], " string"],
+ )
+ self.assertEqual(
+ obj.parseString('"a {double {nested}} string"').asList(),
+ ["a ", ["double ", ["nested"]], " string"],
+ )
# check macro def in string
- self.assertEqual(bp.string.parseString('someascii')[0], Macro('someascii'))
- self.assertRaises(ParseException, bp.string.parseString, '%#= validstring')
+ self.assertEqual(bp.string.parseString("someascii")[0], Macro("someascii"))
+ self.assertRaises(ParseException, bp.string.parseString, "%#= validstring")
# check number in string
- self.assertEqual(bp.string.parseString('1994')[0], '1994')
-
+ self.assertEqual(bp.string.parseString("1994")[0], "1994")
def test_parse_field(self):
# test field value - hashes included
fv = bp.field_value
# Macro
- self.assertEqual(fv.parseString('aname')[0], Macro('aname'))
- self.assertEqual(fv.parseString('ANAME')[0], Macro('aname'))
+ self.assertEqual(fv.parseString("aname")[0], Macro("aname"))
+ self.assertEqual(fv.parseString("ANAME")[0], Macro("aname"))
# String and macro
- self.assertEqual(fv.parseString('aname # "some string"').asList(),
- [Macro('aname'), 'some string'])
+ self.assertEqual(
+ fv.parseString('aname # "some string"').asList(),
+ [Macro("aname"), "some string"],
+ )
# Nested string
- self.assertEqual(fv.parseString('aname # {some {string}}').asList(),
- [Macro('aname'), 'some ', ['string']])
+ self.assertEqual(
+ fv.parseString("aname # {some {string}}").asList(),
+ [Macro("aname"), "some ", ["string"]],
+ )
# String and number
- self.assertEqual(fv.parseString('"a string" # 1994').asList(),
- ['a string', '1994'])
+ self.assertEqual(
+ fv.parseString('"a string" # 1994').asList(), ["a string", "1994"]
+ )
# String and number and macro
- self.assertEqual(fv.parseString('"a string" # 1994 # a_macro').asList(),
- ['a string', '1994', Macro('a_macro')])
-
+ self.assertEqual(
+ fv.parseString('"a string" # 1994 # a_macro').asList(),
+ ["a string", "1994", Macro("a_macro")],
+ )
def test_comments(self):
- res = bp.comment.parseString('@Comment{about something}')
- self.assertEqual(res.asList(), ['comment', '{about something}'])
+ res = bp.comment.parseString("@Comment{about something}")
+ self.assertEqual(res.asList(), ["comment", "{about something}"])
self.assertEqual(
- bp.comment.parseString('@COMMENT{about something').asList(),
- ['comment', '{about something'])
+ bp.comment.parseString("@COMMENT{about something").asList(),
+ ["comment", "{about something"],
+ )
self.assertEqual(
- bp.comment.parseString('@comment(about something').asList(),
- ['comment', '(about something'])
+ bp.comment.parseString("@comment(about something").asList(),
+ ["comment", "(about something"],
+ )
self.assertEqual(
- bp.comment.parseString('@COMment about something').asList(),
- ['comment', ' about something'])
- self.assertRaises(ParseException, bp.comment.parseString,
- '@commentabout something')
- self.assertRaises(ParseException, bp.comment.parseString,
- '@comment+about something')
- self.assertRaises(ParseException, bp.comment.parseString,
- '@comment"about something')
-
+ bp.comment.parseString("@COMment about something").asList(),
+ ["comment", " about something"],
+ )
+ self.assertRaises(
+ ParseException, bp.comment.parseString, "@commentabout something"
+ )
+ self.assertRaises(
+ ParseException, bp.comment.parseString, "@comment+about something"
+ )
+ self.assertRaises(
+ ParseException, bp.comment.parseString, '@comment"about something'
+ )
def test_preamble(self):
res = bp.preamble.parseString('@preamble{"about something"}')
- self.assertEqual(res.asList(), ['preamble', 'about something'])
- self.assertEqual(bp.preamble.parseString(
- '@PREamble{{about something}}').asList(),
- ['preamble', 'about something'])
- self.assertEqual(bp.preamble.parseString("""@PREamble{
+ self.assertEqual(res.asList(), ["preamble", "about something"])
+ self.assertEqual(
+ bp.preamble.parseString("@PREamble{{about something}}").asList(),
+ ["preamble", "about something"],
+ )
+ self.assertEqual(
+ bp.preamble.parseString(
+ """@PREamble{
{about something}
- }""").asList(),
- ['preamble', 'about something'])
-
+ }"""
+ ).asList(),
+ ["preamble", "about something"],
+ )
def test_macro(self):
res = bp.macro.parseString('@string{ANAME = "about something"}')
- self.assertEqual(res.asList(), ['string', 'aname', 'about something'])
+ self.assertEqual(res.asList(), ["string", "aname", "about something"])
self.assertEqual(
- bp.macro.parseString('@string{aname = {about something}}').asList(),
- ['string', 'aname', 'about something'])
-
+ bp.macro.parseString("@string{aname = {about something}}").asList(),
+ ["string", "aname", "about something"],
+ )
def test_entry(self):
txt = """@some_entry{akey, aname = "about something",
another={something else}}"""
res = bp.entry.parseString(txt)
- self.assertEqual(res.asList(),
- ['some_entry', 'akey',
- ['aname', 'about something'], ['another', 'something else']])
+ self.assertEqual(
+ res.asList(),
+ [
+ "some_entry",
+ "akey",
+ ["aname", "about something"],
+ ["another", "something else"],
+ ],
+ )
# Case conversion
txt = """@SOME_ENTRY{akey, ANAME = "about something",
another={something else}}"""
res = bp.entry.parseString(txt)
- self.assertEqual(res.asList(),
- ['some_entry', 'akey',
- ['aname', 'about something'], ['another', 'something else']])
-
+ self.assertEqual(
+ res.asList(),
+ [
+ "some_entry",
+ "akey",
+ ["aname", "about something"],
+ ["another", "something else"],
+ ],
+ )
def test_bibfile(self):
txt = """@some_entry{akey, aname = "about something",
another={something else}}"""
res = bp.bibfile.parseString(txt)
- self.assertEqual(res.asList(),
- [['some_entry', 'akey',
- ['aname', 'about something'],
- ['another', 'something else']]])
-
+ self.assertEqual(
+ res.asList(),
+ [
+ [
+ "some_entry",
+ "akey",
+ ["aname", "about something"],
+ ["another", "something else"],
+ ]
+ ],
+ )
def test_bib1(self):
# First pass whole bib-like tests
@@ -186,5 +227,5 @@ class TestBibparse(unittest.TestCase):
self.assertEqual(res.asList(), res3)
-if __name__ == '__main__':
+if __name__ == "__main__":
unittest.main()