Completed
Push — master ( 85d380...5cc46a )
by Christophe
01:14
created

test_referencing_prefix()   B

Complexity

Conditions 2

Size

Total Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 2
c 2
b 0
f 0
dl 0
loc 30
rs 8.8571
1
# This Python file uses the following encoding: utf-8
2
3
from unittest import TestCase
4
from pandocfilters import Para, Str, Space, Link, Header, Cite, Span
5
import json
6
7
import pandoc_numbering
8
9
def init():
10
    pandoc_numbering.count = {}
11
    pandoc_numbering.information = {}
12
    pandoc_numbering.headers = [0, 0, 0, 0, 0, 0]
13
    if hasattr(pandoc_numbering.getCiteShortCut, 'value'):
14
        delattr(pandoc_numbering.getCiteShortCut, 'value')
15
    if hasattr(pandoc_numbering.getDefaultLevels, 'value'):
16
        delattr(pandoc_numbering.getDefaultLevels, 'value')
17
    if hasattr(pandoc_numbering.getClasses, 'value'):
18
        delattr(pandoc_numbering.getClasses, 'value')
19
    if hasattr(pandoc_numbering.getFormat, 'value'):
20
        delattr(pandoc_numbering.getFormat, 'value')
21
22
def createLink(attributes, text, reference_title):
23
    if pandoc_numbering.pandocVersion() < '1.16':
24
        return Link(text, reference_title)
25
    else:
26
        return Link(attributes, text, reference_title)
27
28 View Code Duplication
def test_referencing_simple():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
29
    init()
30
31
    src = Para([Str(u'Exercise'), Space(), Str(u'#exercise:first')])
32
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
33
34
    src = json.loads(json.dumps(createLink(
35
        ['', [], []],
36
        [],
37
        [u'#exercise:first', u'']
38
    )))
39
    dest = json.loads(json.dumps(createLink(
40
        ['', [], []],
41
        [
42
            Str(u'Exercise'),
43
            Space(),
44
            Str(u'1')
45
        ],
46
        [u'#exercise:first', u'']
47
    )))
48
49
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
50
    assert json.loads(json.dumps(src)) == dest
51
52 View Code Duplication
def test_referencing_title():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
53
    init()
54
55
    src = Para([Str(u'Exercise'), Space(), Str(u'(The'), Space(), Str(u'title)'), Space(), Str(u'-.+.#exercise:first')])
56
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
57
58
    src = json.loads(json.dumps(createLink(
59
        ['', [], []],
60
        [],
61
        [u'#exercise:first', u'#d #D #t #T #s #g #c #n #']
62
    )))
63
    dest = json.loads(json.dumps(createLink(
64
        ['', [], []],
65
        [
66
            Str(u'Exercise'),
67
            Space(),
68
            Str(u'0.1')
69
        ],
70
        [u'#exercise:first', u'exercise Exercise the title The title 0.0 0.0.1 1 0.1 0.1']
71
    )))
72
73
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
74
    assert json.loads(json.dumps(src)) == dest
75
76
def test_referencing_prefix():
77
    init()
78
79
    src = Para([Str(u'Exercise'), Space(), Str(u'(The'), Space(), Str(u'title)'), Space(), Str(u'#exercise:first')])
80
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
81
82
    src = json.loads(json.dumps(createLink(
83
        ['', [], []],
84
        [Str(u'#d#D#t#T#n#')],
85
        [u'#exercise:first', u'']
86
    )))
87
    dest = json.loads(json.dumps(createLink(
88
        ['', [], []],
89
        [
90
            Str(u'exercise'),
91
            Str(u'Exercise'),
92
            Str(u'the'),
93
            Space(),
94
            Str(u'title'),
95
            Str(u'The'),
96
            Space(),
97
            Str(u'title'),
98
            Str(u'1'),
99
            Str(u'1')
100
        ],
101
        [u'#exercise:first', u'']
102
    )))
103
104
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
105
    assert src == dest
106
107
def test_referencing_prefix_single():
108
    init()
109
110
    src = Header(1, [u'first-chapter', [], []], [Str(u'First'), Space(), Str('chapter')])
111
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
112
113
    src = Para([Str(u'Exercise'), Space(), Str(u'+.#ex:')])
114
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
115
116
    src = json.loads(json.dumps(createLink(['', [], []], [Str(u'exercise'), Space(), Str(u'#')], [u'#ex:1.1', u''])))
117
    dest = json.loads(json.dumps(createLink(['', [], []], [Str(u'exercise'), Space(), Str(u'1.1')], [u'#ex:1.1', u''])))
118
119
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
120
    assert src == dest
121
122 View Code Duplication
def test_referencing_name():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
123
    init()
124
125
    src = Para([Str(u'Exercise'), Space(), Str(u'#first')])
126
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
127
128
    src = json.loads(json.dumps(createLink(['', [], []], [Str(u'exercise'), Space(), Str(u'#')], [u'#exercise:first', u''])))
129
    dest = json.loads(json.dumps(createLink(['', [], []], [Str(u'exercise'), Space(), Str(u'1')], [u'#exercise:first', u''])))
130
131
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
132
    assert src == dest
133
134 View Code Duplication
def test_referencing_automatic():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
135
    init()
136
137
    src = Para([Str(u'Exercise'), Space(), Str(u'#')])
138
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
139
140
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:1', u''])))
141
    dest = json.loads(json.dumps(createLink(
142
        ['', [], []],
143
        [
144
            Str(u'Exercise'),
145
            Space(),
146
            Str(u'1')
147
        ],
148
        [u'#exercise:1', u'']
149
    )))
150
151
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
152
    assert json.loads(json.dumps(src)) == dest
153
154
def test_referencing_unexisting():
155
    init()
156
157
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:second', u''])))
158
    dest = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:second', u''])))
159
160
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
161
    assert src == dest
162
163
def test_referencing_headers():
164
    init()
165
166
    src = Header(1, [u'first-chapter', [], []], [Str(u'First'), Space(), Str('chapter')])
167
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
168
169
    src = Para([Str(u'Theorem'), Space(), Str(u'+.#theorem:first')])
170
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
171
172
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#theorem:first', u''])))
173
    dest = json.loads(json.dumps(createLink(
174
        ['', [], []],
175
        [
176
            Str(u'Theorem'),
177
            Space(),
178
            Str(u'1.1')
179
        ],
180
        [u'#theorem:first', u'']
181
    )))
182
183
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
184
    assert json.loads(json.dumps(src)) == dest
185
186
    src = json.loads(json.dumps(createLink(
187
        ['', [], []],
188
        [Str(u'See'), Space(), Str(u'theorem'), Space(), Str(u'#')],
189
        [u'#theorem:first', u'theorem #']
190
    )))
191
    dest = json.loads(json.dumps(
192
        createLink(['', [], []],
193
        [Str(u'See'), Space(), Str(u'theorem'), Space(), Str(u'1.1')],
194
        [u'#theorem:first', u'theorem 1.1']
195
    )))
196
197
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
198
    assert src == dest
199
200
def test_referencing_without_cite_shortcut():
201
    init()
202
203
    src = Para([Str(u'Theorem'), Space(), Str(u'#theorem:first')])
204
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
205
206
    src = Cite([], [Str(u'@theorem:first')])
207
    dest = Cite([], [Str(u'@theorem:first')])
208
209
    assert pandoc_numbering.referencing(src['t'], src['c'], '', {}) == None
210
    assert src == dest
211
212
def test_referencing_with_cite_shortcut():
213
    init()
214
215
    meta = {
216
        'pandoc-numbering': {
217
            't': 'MetaList',
218
            'c': [
219
                {
220
                    't': 'MetaMap',
221
                    'c': {
222
                        'category': {
223
                            't': 'MetaInlines',
224
                            'c': [Str('theorem')]
225
                        },
226
                        'cite-shortcut': {
227
                            't': 'MetaBool',
228
                            'c': True
229
                        }
230
                    }
231
                }
232
            ]
233
        }
234
    }
235
236
    src = Para([Str(u'Theorem'), Space(), Str(u'#theorem:first')])
237
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
238
239
    src = json.loads(json.dumps(Cite([], [Str(u'@theorem:first')])))
240
    dest = json.loads(json.dumps(createLink(['', [], []], [Str(u'1')], [u'#theorem:first', u''])))
241
242
    assert json.loads(json.dumps(pandoc_numbering.referencing(src['t'], src['c'], '', meta))) == dest
243
244
def test_referencing_format():
245
    init()
246
247
    meta = {
248
        'pandoc-numbering': {
249
            't': 'MetaList',
250
            'c': [
251
                {
252
                    't': 'MetaMap',
253
                    'c': {
254
                        'category': {
255
                            't': 'MetaInlines',
256
                            'c': [Str('exercise')]
257
                        },
258
                        'format': {
259
                            't': 'MetaBool',
260
                            'c': False
261
                        }
262
                    }
263
                }
264
            ]
265
        }
266
    }
267
268
    src = Para([Str(u'Exercise'), Space(), Str(u'#')])
269
    pandoc_numbering.numbering(src['t'], src['c'], u'', meta)
270
271
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:1', u''])))
272
    dest = json.loads(json.dumps(createLink(
273
        ['', [], []],
274
        [
275
            Span(
276
                ['', ['pandoc-numbering-link', 'exercise'], []],
277
                [
278
                    Span(['', ['description'], []], [Str(u'Exercise')]),
279
                    Span(['', ['title'], []], []),
280
                    Span(['', ['local'], []], [Str(u'1')]),
281
                    Span(['', ['global'], []], [Str(u'1')]),
282
                    Span(['', ['section'], []], [Str(u'')]),
283
                ]
284
            )
285
        ],
286
        [u'#exercise:1', u'']
287
    )))
288
289
    pandoc_numbering.referencing(src['t'], src['c'], '', meta)
290
291
    assert json.loads(json.dumps(src)) == dest
292
293
294