diff options
-rwxr-xr-x | generate_reference.py | 2 | ||||
-rwxr-xr-x | test_generate_reference.py | 298 |
2 files changed, 181 insertions, 119 deletions
diff --git a/generate_reference.py b/generate_reference.py index 5ee7363..edc4703 100755 --- a/generate_reference.py +++ b/generate_reference.py @@ -7,8 +7,6 @@ import sys import xml.sax from xml.sax.saxutils import XMLFilterBase, XMLGenerator -logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s', - level=logging.DEBUG) ENGL_BOOKS = ('Gen', 'Exod', 'Lev', 'Num', 'Deut', 'Josh', 'Judg', 'Ruth', '1Sam', '2Sam', '1Kgs', '2Kgs', '1Chr', '2Chr', 'Ezra', 'Neh', diff --git a/test_generate_reference.py b/test_generate_reference.py index 6cfd082..4207db2 100755 --- a/test_generate_reference.py +++ b/test_generate_reference.py @@ -1,118 +1,24 @@ #!/usr/bin/env python3 +# -*- coding: utf-8 -*- import logging import unittest -logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s', - level=logging.DEBUG) - -TESTS = ( - ('Ž 93,2', (('Ž', 93, 2),)), - ('Př 8,22—24; Ž 93,2; 102,25—27v; Iz 40,21; Mk 13,19;J 1,1—3; ' + - 'He 1,10—12; 1J 1,1; [Jde o počátek věčnosti (Iz 66,1n — tj. ' + - 'mimo čas.]', - (('Př', 8, 22, 24), - ('Ž', 93, 2), - ('Ž', 102, 25, 27), - ('Iz', 40, 21), - ('Mk', 13, 19), - ('J', 1, 1, 3), - ('He', 1, 10, 12), - ('1J', 1, 1), - ('Iz', 66, 1) # TODO we should parse also 1n style verse ref. - ) - ), - # ('v. 21.27; Iz 42,5; 45,12.18; Ž 90,2v; Sk 17,24v; - # Ř 1,20;He 11,3v; Zj 4,11; ' '10,6; [h. slsobārā’ se používá pouze - # o Bohu a popisuje stvoření něčeho ' 'nového a dokonalého. Buď se - # jedná o stvoření z ničeho jako při prvotním ' 'stvoření - # (He 11,3v), anebo o obnovu nebo přetvořenípro nový účel či nové - # ' 'uspořádání (srv. Ž 51,10; Iz 65,17)]', ()), - ('[h. výraz’ₑlōhîm jeplurál od ’ₑlôah velmičastý ve spojení se sg. ' - ' slovesa; majestát a svrchovanost. v pl. (např. Sd 2,3) a také ' - 'v případech zřejmých z kontextu (Dt 4,28; 6,14) se jedná ' - 'o bohy — pohanská božstva]', - ( - ('Sd', 2, 3), - ('Dt', 4, 28), - ('Dt', 6, 13), - ) - ), - # ('14,19; Ex 20,11; Iz 37,16; Jr 32,17; 1Pa 16,26; Neh 9,6;Ž 8,4; ' - # '115,15; Sk 4,24', ()), - ('Jb 38,4; Př 3,19; Jr 10,12', - (('Jb', 38, 4), - ('Př', 3, 19), - ('Jr', 10, 12))), - ('Jr 4,23; Iz 45,18p', - (('Jr', 4, 23), - ('Iz', 45, 18))), - ('Iz 9,1; 58,10', - (('Iz', 9, 1), - ('Iz', 58, 10))), - ('Př 8,24.27n; Iz 51,10; Ez 31,15; Jon 2,6', - (('Př', 8, 24, 27), - ('Iz', 51, 10), - ('Ez', 31, 15), - ('Jon', 2, 6) - ) - ), - ('Iz 40,13-15; Ž 33,6;', - ( - ('Iz', 40, 13, 15), - ('Ž', 33, 6) - )), - #('[klíčový výraz kapitoly (srv. v. 6.7.14.18) a vůbec celéhoZákona ' - #'(Ex 26,33; Lv 10,10; 20,24; Nu 8,14; Dt 4,41; 10,8; srv. 1Kr 8,53;Neh 9,2; ' - #'Ez 42,20); zde vidíme, že světlo existuje souběžně s tmou, alevzájemně ' - #'se vylučují (nemísí se); srv. J 1,5]', ()), - ('srv. Ez 1,22; 10,1', - (('Ez', 1, 22), ('Ez', 10, 1))), - #('Ž 74,16; 136,7nn; Jr 31,35; [slova slunce a měsíc nejsouprav. záměrně ' - #'použita, protože oba výrazy označovaly uctívaná pohanská božstva(srv. ' - #'Dt 4,19); zde je naopak zdůrazněno (dále ještě třemi slovesy,popisujícími ' - #'jejich funkci), že to jsou stvořené věci, nikolivbožstva]', ()), - ('Ž 8,4; Iz 40,26; Am 5,8; [pro jejich množství jsou použity ' + - 'k vyjádření velkého počtu — např. Gn 15,5; Dt 1,10;Na 3,16]', - ( - ('Ž', 8, 4), ('Iz', 40, 26), ('Am', 5, 8), ('Gn', 15, 5), - ('Dt', 1, 10), ('Na', 3, 16) - )), - # ('v. 1p', ('', 0, 1)), # TODO what does 'p' suffix means? - #('v. 28; 2,3; 5,2; 12,2; [v h. je slsoḇ–r–ḵ vždyspojeno', ()), - #('přítomnosti;(srv. 3,22!; 11,7; Jb 1,6—12; 2,1—6; Iz 6,8; 1Kr 22,19—23; ' - #'Jr 23,18;Za 3,1—7)]', ()), - #('9,6; 5,3; 1K 11,7; Ef 4,24; srv. Ko 3,10p; [tzn. aby prostvoření ' - # 'představoval Boha]', ()), - ('5,1; Jk 3,9', - ( - ('', 5, 1), ('Jk', 3, 9) - ) - ), - #('n.: mužského a ženského pohlaví. 5,2;Dt 4,16; Mt 19,4', ()), -) - import generate_reference - -class TestNotesParsing(unittest.TestCase): # IGNORE:C0111 - pass - - -def _generate_test_name(): - counter = 0 - while True: - counter += 1 - yield "{:03d}".format(counter) +logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s', + level=logging.INFO) +log = logging.getLogger(__name__) -def _create_test(test_string, want): - """ - Decorate tested function to be used as a method for TestCase. - """ - def do_test_expected(self): +class TestNotesParsing(unittest.TestCase): # IGNORE:C0111 + def setUp(self): self.maxDiff = None + def do_test_expected(self, test_string, want): + log.debug('test_string = %s', test_string) got = generate_reference.parse_notes_test(test_string) + log.debug('want = %s', want) + log.debug('got = %s', got) try: self.assertEqual(got, want, """Result matches expected = %s @@ -120,21 +26,179 @@ def _create_test(test_string, want): observed = %s """ % (want, got)) except AssertionError: - logging.debug("want = %s", want) + log.debug("want = %s", want) raise - return do_test_expected + def test_simple_reference(self): + instr = 'Ž 93,2' + exptuple = (('Ž', 93, 2),) + self.do_test_expected(instr, exptuple) + + def test_prvni_empty(self): + instr = '5,1; Jk 3,9' + exptuple = (('', 5, 1), ('Jk', 3, 9)) + self.do_test_expected(instr, exptuple) + + def test_parse_pr_8_22_a_dalsi(self): + instr = 'Př 8,22—24; Ž 93,2; 102,25—27v; Iz 40,21; Mk 13,19;' + \ + 'J 1,1—3; He 1,10—12; 1J 1,1; [Jde o počátek věčnosti ' + \ + '(Iz 66,1n — tj. mimo čas.]' + exptuple = (('Př', 8, 22, 24), + ('Ž', 93, 2), + ('Ž', 102, 25, 27), + ('Iz', 40, 21), + ('Mk', 13, 19), + ('J', 1, 1, 3), + ('He', 1, 10, 12), + ('1J', 1, 1), + # TODO we should parse also 1n style verse ref. + ('Iz', 66, 1)) + self.do_test_expected(instr, exptuple) + + def test_unknown_14_19(self): + instr = '14,19; Ex 20,11; Iz 37,16; Jr 32,17; 1Pa 16,26; Neh 9,6;' + \ + 'Ž 8,4; 115,15; Sk 4,24' + exptuple = (('', 14, 19), + ('Ex', 20, 11), + ('Iz', 37, 16), + ('Jr', 32, 17), + ('1Pa', 16, 26), + ('Neh', 9, 6), + ('Ž', 8, 4), + ('Ž', 115, 15), + ('Sk', 4, 24)) + self.do_test_expected(instr, exptuple) + + def test_elohim(self): + instr = '[h. výraz’ₑlōhîm jeplurál od ’ₑlôah velmičastý' + \ + ' ve spojení se sg. slovesa; majestát a svrchovanost. ' + \ + 'v pl. (např. Sd 2,3) a také v případech zřejmých z kontextu ' + \ + '(Dt 4,28; 6,14) se jedná o bohy — pohanská božstva]' + exptuple = (('Sd', 2, 3), + ('Dt', 4, 28), + ('Dt', 6, 14)) + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implemented yet') + def test_slsobara(self): + instr = 'v. 21.27; Iz 42,5; 45,12.18; Ž 90,2v; Sk 17,24v;' + \ + 'Ř 1,20;He 11,3v; Zj 4,11; ' '10,6; [h. slsobārā’ se používá' + \ + ' pouze o Bohu a popisuje stvoření něčeho ' 'nového' + \ + ' a dokonalého. Buď se jedná o stvoření z ničeho jako při' + \ + ' prvotním stvoření (He 11,3v), anebo o obnovu nebo přetvoření' + \ + ' pro nový účel či nové uspořádání (srv. Ž 51,10; Iz 65,17)]' + exptuple = (('', 21, 27), ('Iz', 42, 5), ('Iz', 45, 12, 18), + ('Ž', 90, 2), ('Sk', 17, 24), ('Ř', 1, 20), ('He', 11, 3), + ('Zj', 4, 11), ('Zj', 10, 6), ('He', 11, 3), + ('Ž', 51, 10), ('Iz', 65, 17)) + + self.do_test_expected(instr, exptuple) + + def test_jb_38_4(self): + instr = 'Jb 38,4; Př 3,19; Jr 10,12' + exptuple = (('Jb', 38, 4), + ('Př', 3, 19), + ('Jr', 10, 12)) + self.do_test_expected(instr, exptuple) + + def test_jr_4_23(self): + instr = 'Jr 4,23; Iz 45,18p' + exptuple = (('Jr', 4, 23), ('Iz', 45, 18)) + self.do_test_expected(instr, exptuple) + + def test_iz_9_1(self): + instr = 'Iz 9,1; 58,10' + exptuple = (('Iz', 9, 1), ('Iz', 58, 10)) + self.do_test_expected(instr, exptuple) + + def test_pr_8_24(self): + instr = 'Př 8,24.27n; Iz 51,10; Ez 31,15; Jon 2,6' + exptuple = (('Př', 8, 24, 27), ('Iz', 51, 10), ('Ez', 31, 15), + ('Jon', 2, 6)) + self.do_test_expected(instr, exptuple) + + def test_iz_40_13(self): + instr = 'Iz 40,13-15; Ž 33,6;' + exptuple = (('Iz', 40, 13, 15), ('Ž', 33, 6)) + self.do_test_expected(instr, exptuple) + + def test_srv_ez_1_22(self): + instr = 'srv. Ez 1,22; 10,1' + exptuple = (('Ez', 1, 22), ('Ez', 10, 1)) + self.do_test_expected(instr, exptuple) + + @unittest.skip('This fails so far') + def test_dlouhy_klicovy_vyraz(self): + instr = '[klíčový výraz kapitoly (srv. v. 6.7.14.18) a vůbec ' + \ + 'celého Zákona (Ex 26,33; Lv 10,10; 20,24; Nu 8,14;' + \ + ' Dt 4,41; 10,8; srv. 1Kr 8,53;Neh 9,2; Ez 42,20); zde' + \ + ' vidíme, že světlo existuje souběžně s tmou, ale ' + \ + 'vzájemně se vylučují (nemísí se); srv. J 1,5]' + exptuple = (('', 40, 13, 15), # FIXME not sure how 2D multiple verses + ('Ex', 26, 33), + ('Lv', 10, 10), + ('Lv', 20, 24), + ('Nu', 8, 14), + ('Dt', 4, 41), + ('Dt', 10, 8), + ('1Kr', 8, 53), + ('Neh', 9, 2), + ('Ez', 42, 20), + ('J', 1, 5)) + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implemented yet') + def test_slunce_mesic(self): + instr = 'Ž 74,16; 136,7nn; Jr 31,35; [slova slunce a měsíc ' + \ + 'nejsou prav. záměrně použita, protože oba výrazy ' + \ + 'označovaly uctívaná pohanská božstva(srv. Dt 4,19);' + \ + ' zde je naopak zdůrazněno (dále ještě třemi ' + \ + 'slovesy, popisujícími jejich funkci), že to ' + \ + 'jsou stvořené věci, nikolivbožstva]' + exptuple = () + self.do_test_expected(instr, exptuple) + + def test_velky_pocet(self): + instr = 'Ž 8,4; Iz 40,26; Am 5,8; [pro jejich množství ' + \ + 'jsou použity k vyjádření velkého počtu — např. Gn 15,5; ' + \ + 'Dt 1,10;Na 3,16]' + exptuple = (('Ž', 8, 4), ('Iz', 40, 26), ('Am', 5, 8), ('Gn', 15, 5), + ('Dt', 1, 10), ('Na', 3, 16)) + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implented yet') + def test_p_suffix(self): + # TODO what does 'p' suffix means? + instr = 'v. 1p' + exptuple = (('', 0, 1)) + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implented yet') + def test_unknown_28(self): + instr = 'v. 28; 2,3; 5,2; 12,2; [v h. je slsoḇ–r–ḵ vždyspojeno' + exptuple = () + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implented yet') + def test_pritomnosti(self): + instr = 'přítomnosti;(srv. 3,22!; 11,7; Jb 1,6—12; 2,1—6; ' + \ + 'Iz 6,8; 1Kr 22,19—23; Jr 23,18;Za 3,1—7)]' + exptuple = () + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implented yet') + def test_unknown_9_6(self): + instr = '9,6; 5,3; 1K 11,7; Ef 4,24; srv. Ko 3,10p; ' + \ + '[tzn. aby prostvoření představoval Boha]' + exptuple = () + self.do_test_expected(instr, exptuple) + + @unittest.skip('Not implented yet') + def test_pohlavi(self): + instr = 'n.: mužského a ženského pohlaví. 5,2;Dt 4,16; Mt 19,4' + exptuple = () + self.do_test_expected(instr, exptuple) if __name__ == '__main__': - for test_str, parsed_out in TESTS: - logging.debug('test_str, parsed_out:\n%s, %s' % - (test_str, parsed_out)) - test_name = _generate_test_name() -# test_name = "test_parsing_%03d" % TESTS.index((test_str, parsed_out)) - logging.debug('test_name = %s', test_name) - test_method = _create_test(test_str, parsed_out) - test_method.__name__ = str('test_%s' % test_name) - setattr(TestNotesParsing, test_method.__name__, test_method) - - unittest.main() + unittest.main(verbosity=2) |