summaryrefslogtreecommitdiffstats
path: root/test_generate_reference.py
blob: 0a2cd658b885fae1123f2953e5c26e1fcea1708a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python3
import logging
logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s',
                    level=logging.DEBUG)
import unittest

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 Bohua 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', ()),
#('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)

def _create_test(test_string, want):
    """
    Decorate tested function to be used as a method for TestCase.
    """
    def do_test_expected(self):
        self.maxDiff = None

        got = generate_reference.parse_notes_test(test_string)
        try:
            self.assertEqual(got, want, """Result matches
            expected = %s

            observed = %s
            """ % (want, got))
        except AssertionError:
            logging.debug("want = %s", want)
            raise

    return do_test_expected


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()