Completed
Pull Request — master (#5)
by
unknown
30s
created

test_numbering_none()   A

Complexity

Conditions 2

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 7
rs 9.4285
1
# This Python file uses the following encoding: utf-8
2
3
from unittest import TestCase
4
from pandocfilters import Para, Str, Space, Span, Strong, RawInline, Emph, Header, DefinitionList, Plain
5
6
import json
7
8
import pandoc_numbering
9
10
from helper import init, createMetaList, createMetaMap, createMetaInlines, createListStr, createMetaString, createMetaBool
11
12
def getMeta1():
13
    return {
14
        'pandoc-numbering': createMetaList([
15
            createMetaMap({
16
                'category': createMetaInlines(u'exercise'),
17
                'sectioning': createMetaInlines(u'-.+.')
18
            })
19
        ])
20
    }
21
22
def getMeta2():
23
    return {
24
        'pandoc-numbering': createMetaList([
25
            createMetaMap({
26
                'category': createMetaInlines(u'exercise'),
27
                'first': createMetaString(u'2'),
28
                'last': createMetaString(u'2'),
29
            })
30
        ])
31
    }
32
33
def getMeta3():
34
    return {
35
        'pandoc-numbering': createMetaList([
36
            createMetaMap({
37
                'category': createMetaInlines(u'exercise'),
38
                'first': createMetaString(u'a'),
39
                'last': createMetaString(u'b'),
40
            })
41
        ])
42
    }
43
44
def getMeta4():
45
    return {
46
        'pandoc-numbering': createMetaList([
47
            createMetaMap({
48
                'category': createMetaInlines(u'exercise'),
49
                'classes': createMetaList([createMetaInlines(u'my-class')])
50
            })
51
        ])
52
    }
53
54
def getMeta5():
55
    return {
56
        'pandoc-numbering': createMetaList([
57
            createMetaMap({
58
                'category': createMetaInlines(u'exercise'),
59
                'format': createMetaBool(False)
60
            })
61
        ])
62
    }
63
64
def test_numbering_none():
65
    init()
66
67
    src =  Para(createListStr(u'Not an exercise'))
68
    dest = src
69
70
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
71
72
def test_numbering():
73
    init()
74
75
    src = Para(createListStr(u'Exercise #'))
76
    dest = Para([
77
        Span(
78
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
79
            [Strong(createListStr(u'Exercise 1'))]
80
        )
81
    ])
82
83
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
84
85
def test_numbering_definitionlist():
86
    init()
87
88
    src = DefinitionList([
89
        [
90
            createListStr(u'Exercise #'),
91
            [Plain([createListStr(u'Content A')])]
92
        ],
93
        [
94
            createListStr(u'Exercise #'),
95
            [Plain([createListStr(u'Content B')])]
96
        ]
97
    ])
98
    dest = DefinitionList([
99
        [
100
            [Span(
101
                [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
102
                [Strong(createListStr(u'Exercise 1'))]
103
            )],
104
            [Plain([createListStr(u'Content A')])]
105
        ],
106
        [
107
            [Span(
108
                [u'exercise:2', ['pandoc-numbering-text', 'exercise'], []],
109
                [Strong(createListStr(u'Exercise 2'))]
110
            )],
111
            [Plain([createListStr(u'Content B')])]
112
        ]
113
    ])
114
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
115
116
def test_numbering_prefix_single():
117
    init()
118
119
    src = Para(createListStr(u'Exercise #ex:'))
120
    dest = Para([
121 View Code Duplication
        Span(
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
122
            [u'ex:1', ['pandoc-numbering-text', 'ex'], []],
123
            [Strong(createListStr(u'Exercise 1'))]
124
        )
125
    ])
126
127
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
128
129
    src = Para(createListStr(u'Exercise #'))
130
    dest = Para([
131
        Span(
132
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
133
            [Strong(createListStr(u'Exercise 1'))]
134
        )
135
    ])
136
137
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
138
139
def test_numbering_latex():
140
    init()
141
142
    src = Para(createListStr(u'Exercise #'))
143
    dest = Para([
144
        RawInline(u'tex', u'\\phantomsection\\addcontentsline{exercise}{exercise}{\\protect\\numberline {1}{\\ignorespaces Exercise}}'),
145
        Span(
146
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
147 View Code Duplication
            [Strong(createListStr(u'Exercise 1'))]
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
148
        )
149
    ])
150
151
    assert pandoc_numbering.numbering(src['t'], src['c'], 'latex', {}) == dest
152
153
    init()
154
155
    src = Para(createListStr(u'Exercise (The title) #'))
156
    dest = Para([
157
        RawInline(u'tex', u'\\phantomsection\\addcontentsline{exercise}{exercise}{\\protect\\numberline {1}{\\ignorespaces The title}}'),
158
        Span(
159
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
160
            [
161
                Strong(createListStr(u'Exercise 1')),
162
                Space(),
163
                Emph(createListStr(u'(') + createListStr(u'The title') + createListStr(u')'))
164
            ]
165
       )
166
    ])
167
168
    assert pandoc_numbering.numbering(src['t'], src['c'], 'latex', {}) == dest
169
170
def test_numbering_double():
171
    init()
172
173
    src = Para(createListStr(u'Exercise #'))
174
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
175
176
    src = Para(createListStr(u'Exercise #'))
177
    dest = Para([
178
        Span(
179
            [u'exercise:2', ['pandoc-numbering-text', 'exercise'], []],
180
            [Strong(createListStr(u'Exercise 2'))]
181
        )
182
    ])
183
184
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
185
186
def test_numbering_title():
187
    init()
188
189
    src = Para(createListStr(u'Exercise (The title) #'))
190
    dest = Para([
191
        Span(
192
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
193
            [
194
                Strong(createListStr(u'Exercise 1')),
195
                Space(),
196
                Emph(createListStr(u'(') + createListStr(u'The title') + createListStr(u')'))
197
            ]
198
        )
199
    ])
200
201
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
202
203
def test_numbering_level():
204
    init()
205
206 View Code Duplication
    src = Para(createListStr(u'Exercise +.+.#'))
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
207
    dest = Para([
208
        Span(
209
            [u'exercise:0.0.1', ['pandoc-numbering-text', 'exercise'], []],
210
            [Strong(createListStr(u'Exercise 0.0.1'))]
211
        )
212
    ])
213
214
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
215
216
    src = Header(1, [u'first-chapter', [], []], createListStr(u'First chapter'))
217
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
218
219
    src = Header(2, [u'first-section', [], []], createListStr(u'First section'))
220
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
221
222
    src = Para(createListStr(u'Exercise +.+.#'))
223
    dest = Para([
224
        Span(
225
            [u'exercise:1.1.1', ['pandoc-numbering-text', 'exercise'], []],
226
            [Strong(createListStr(u'Exercise 1.1.1'))]
227
        )
228
    ])
229
230
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
231
232
    src = Para(createListStr(u'Exercise +.+.#'))
233
    dest = Para([
234
        Span(
235
            [u'exercise:1.1.2', ['pandoc-numbering-text', 'exercise'], []],
236
            [Strong(createListStr(u'Exercise 1.1.2'))]
237
        )
238
    ])
239
240
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
241
242
    src = Header(2, [u'second-section', [], []], createListStr(u'Second section'))
243
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
244
245
    src = Para(createListStr(u'Exercise +.+.#'))
246
    dest = Para([
247
        Span(
248
            [u'exercise:1.2.1', ['pandoc-numbering-text', 'exercise'], []],
249
            [Strong(createListStr(u'Exercise 1.2.1'))]
250
        )
251
    ])
252
253
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
254
255
def test_numbering_unnumbered():
256
    init()
257
258
    src = Header(1, [u'unnumbered-chapter', [u'unnumbered'], []], createListStr(u'Unnumbered chapter'))
259
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
260
261
    src = Para(createListStr(u'Exercise +.#'))
262
    dest = Para([
263
        Span(
264
            [u'exercise:0.1', ['pandoc-numbering-text', 'exercise'], []],
265
            [Strong(createListStr(u'Exercise 0.1'))]
266
        )
267
    ])
268
269
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
270
271
def test_numbering_hidden():
272
    init()
273
274
    src = Header(1, [u'first-chapter', [], []], createListStr(u'First chapter'))
275
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
276
277
    src = Para(createListStr(u'Exercise -.#exercise:one'))
278
    dest = Para([
279
        Span(
280
            [u'exercise:one', ['pandoc-numbering-text', 'exercise'], []],
281
            [
282
                Strong(createListStr(u'Exercise 1'))
283
            ]
284
        )
285
    ])
286
287
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
288
289
    src = Para(createListStr(u'Exercise -.#'))
290
    dest = Para([
291
        Span(
292
            [u'exercise:1.2', ['pandoc-numbering-text', 'exercise'], []],
293
            [Strong(createListStr(u'Exercise 2'))]
294
        )
295
    ])
296
297
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
298
299
    src = Header(1, [u'second-chapter', [], []], createListStr(u'Second chapter'))
300
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
301
302
    src = Para(createListStr(u'Exercise -.#'))
303
    dest = Para([
304
        Span(
305
            [u'exercise:2.1', ['pandoc-numbering-text', 'exercise'], []],
306
            [Strong(createListStr(u'Exercise 1'))]
307
        )
308
    ])
309
310
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
311
312
    src = Para(createListStr(u'Exercise +.#'))
313
    dest = Para([
314
        Span(
315 View Code Duplication
            [u'exercise:2.2', ['pandoc-numbering-text', 'exercise'], []],
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
316
            [Strong(createListStr(u'Exercise 2.2'))]
317
        )
318
    ])
319
320
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
321
322
    src = Para([Str(u'Exercise'), Space(), Str(u'#')])
323
    dest = Para([
324
        Span(
325
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
326
            [Strong(createListStr(u'Exercise 1'))]
327
        )
328
    ])
329
330
    assert pandoc_numbering.numbering(src['t'], src['c'], '', {}) == dest
331
332 View Code Duplication
def test_numbering_sharp_sharp():
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
333
    init()
334
335
    src = Para(createListStr(u'Exercise ##'))
336
    dest = Para(createListStr(u'Exercise #'))
337
    pandoc_numbering.numbering(src['t'], src['c'], '', {})
338
339
    assert src == dest
340
341
def sectioning(meta):
342
    src = Header(1, [u'first-chapter', [], []], createListStr(u'First chapter'))
343
    pandoc_numbering.numbering(src['t'], src['c'], '', meta)
344
345
    src = Header(1, [u'second-chapter', [], []], createListStr(u'Second chapter'))
346
    pandoc_numbering.numbering(src['t'], src['c'], '', meta)
347
348
    src = Header(2, [u'first-section', [], []], createListStr(u'First section'))
349 View Code Duplication
    pandoc_numbering.numbering(src['t'], src['c'], '', meta)
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
350
351
    src = Header(2, [u'second-section', [], []], createListStr(u'Second section'))
352
    pandoc_numbering.numbering(src['t'], src['c'], '', meta)
353
354
def test_numbering_sectioning_string():
355
    init()
356
357
    meta = getMeta1()
358
359
    sectioning(meta)
360
361
    src = Para(createListStr(u'Exercise #'))
362
    dest = Para([
363
        Span(
364
            [u'exercise:2.2.1', ['pandoc-numbering-text', 'exercise'], []],
365
            [Strong(createListStr(u'Exercise 2.1'))]
366 View Code Duplication
        )
1 ignored issue
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
367
    ])
368
369
    assert pandoc_numbering.numbering(src['t'], src['c'], '', meta) == dest
370
371
def test_numbering_sectioning_map():
372
    init()
373
374
    meta = getMeta2()
375
376
    sectioning(meta)
377
378
    src = Para([Str(u'Exercise'), Space(), Str(u'#')])
379
    dest = Para([
380
        Span(
381
            [u'exercise:2.2.1', ['pandoc-numbering-text', 'exercise'], []],
382
            [Strong(createListStr(u'Exercise 2.1'))]
383
        )
384
    ])
385
386
    assert pandoc_numbering.numbering(src['t'], src['c'], '', meta) == dest
387
388
def test_numbering_sectioning_map_error():
389
    init()
390
391
    meta = getMeta3()
392
393
    sectioning(meta)
394
395
    src = Para(createListStr(u'Exercise #'))
396
    dest = Para([
397
        Span(
398
            [u'exercise:1', ['pandoc-numbering-text', 'exercise'], []],
399
            [Strong(createListStr(u'Exercise 1'))]
400
        )
401
    ])
402
403
    assert pandoc_numbering.numbering(src['t'], src['c'], '', meta) == dest
404
405
def test_classes():
406
    init()
407
408
    meta = getMeta4()
409
410
    src = Para(createListStr(u'Exercise #'))
411
    dest = Para([
412
        Span(
413
            [u'exercise:1', ['pandoc-numbering-text', 'my-class'], []],
414
            [Strong(createListStr(u'Exercise 1'))]
415
        )
416
    ])
417
418
    assert pandoc_numbering.numbering(src['t'], src['c'], '', meta) == dest
419
420
def test_format():
421
    init()
422
423
    meta = getMeta5()
424
425
    src = Para(createListStr(u'Exercise #'))
426
    dest = json.loads(json.dumps(Para([
427
        Span(
428
            [u'exercise:1', ['pandoc-numbering-text', 'exercice'], []],
429
            [
430
                Span(['', ['description'], []], createListStr(u'Exercise')),
431
                Span(['', ['number'], []], createListStr(u'1')),
432
                Span(['', ['title'], []], [])
433
            ]
434
        )
435
    ])))
436
437
    json.loads(json.dumps(pandoc_numbering.numbering(src['t'], src['c'], '', meta))) == dest
438