Completed
Branch master (883534)
by Christophe
01:22 queued 11s
created

test_referencing_format()   B

Complexity

Conditions 2

Size

Total Lines 29

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 29
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
from helper import init, createLink, createMetaList, createMetaMap, createMetaInlines, createListStr, createMetaString, createMetaBool
10
11
def getMeta1():
12
    return {
13
        'pandoc-numbering': createMetaList([
14
            createMetaMap({
15
                'category': createMetaInlines('theorem'),
16
                'cite-shortcut': createMetaBool(True)
17
            })
18
        ])
19
    }
20
21
def getMeta2():
22
    return {
23
        'pandoc-numbering': createMetaList([
24
            createMetaMap({
25
                'category': createMetaInlines('exercise'),
26
                'format': createMetaBool(False)
27
            })
28
        ])
29
    }
30
31
def test_referencing_simple():
32
    init()
33
34
    src = Para(createListStr('Exercise #exercise:first'))
35
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
36
37
    src = json.loads(json.dumps(createLink(
38
        ['', [], []],
39
        [],
40
        [u'#exercise:first', u'']
41
    )))
42
    dest = json.loads(json.dumps(createLink(
43
        ['', [], []],
44
        createListStr('Exercise 1'),
45
        [u'#exercise:first', u'']
46
    )))
47
48
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
49
    assert json.loads(json.dumps(src)) == dest
50
51
def test_referencing_title():
52
    init()
53
54
    src = Para(createListStr('Exercise (The title) -.+.#exercise:first'))
55
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
56
57
    src = json.loads(json.dumps(createLink(
58
        ['', [], []],
59
        [],
60
        [u'#exercise:first', u'#d #D #t #T #s #g #c #n #']
61
    )))
62
    dest = json.loads(json.dumps(createLink(
63
        ['', [], []],
64
        createListStr('Exercise 0.1'),
65
        [u'#exercise:first', u'exercise Exercise the title The title 0.0 0.0.1 1 0.1 0.1']
66
    )))
67
68
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
69
    assert json.loads(json.dumps(src)) == dest
70
71 View Code Duplication
def test_referencing_prefix():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
72
    init()
73
74
    src = Para(createListStr('Exercise (The title) #exercise:first'))
75
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
76
77
    src = json.loads(json.dumps(createLink(
78
        ['', [], []],
79
        createListStr('#d#D#t#T#n#'),
80
        [u'#exercise:first', u'']
81
    )))
82
    dest = json.loads(json.dumps(createLink(
83
        ['', [], []],
84
        createListStr('exercise') +
85
        createListStr('Exercise') +
86
        createListStr('the title') +
87
        createListStr('The title') +
88
        createListStr('1') +
89
        createListStr('1'),
90
        [u'#exercise:first', u'']
91
    )))
92
93
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
94
    assert src == dest
95
96
def test_referencing_prefix_single():
97
    init()
98
99
    src = Header(1, [u'first-chapter', [], []], createListStr('First chapter'))
100
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
101
102
    src = Para(createListStr('Exercise +.#ex:'))
103
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
104
105
    src = json.loads(json.dumps(createLink(['', [], []], createListStr('exercise #'), [u'#ex:1.1', u''])))
106
    dest = json.loads(json.dumps(createLink(['', [], []], createListStr('exercise 1.1'), [u'#ex:1.1', u''])))
107
108
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
109
    assert src == dest
110
111 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...
112
    init()
113
114
    src = Para(createListStr('Exercise #first'))
115
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
116
117
    src = json.loads(json.dumps(createLink(['', [], []], createListStr('exercise #'), [u'#exercise:first', u''])))
118
    dest = json.loads(json.dumps(createLink(['', [], []], createListStr('exercise 1'), [u'#exercise:first', u''])))
119
120
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
121
    assert src == dest
122
123
def test_referencing_automatic():
124
    init()
125
126
    src = Para(createListStr('Exercise #'))
127
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
128
129
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:1', u''])))
130
    dest = json.loads(json.dumps(createLink(
131
        ['', [], []],
132
        createListStr('Exercise 1'),
133
        [u'#exercise:1', u'']
134
    )))
135
136
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
137
    assert json.loads(json.dumps(src)) == dest
138
139
def test_referencing_unexisting():
140
    init()
141
142
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:second', u''])))
143
    dest = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:second', u''])))
144
145
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
146
    assert src == dest
147
148
def test_referencing_headers():
149
    init()
150
151
    src = Header(1, [u'first-chapter', [], []], createListStr('First chapter'))
152
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
153
154
    src = Para(createListStr('Theorem +.#theorem:first'))
155
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
156
157
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#theorem:first', u''])))
158
    dest = json.loads(json.dumps(createLink(
159
        ['', [], []],
160
        createListStr('Theorem 1.1'),
161
        [u'#theorem:first', u'']
162
    )))
163
164
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
165
    assert json.loads(json.dumps(src)) == dest
166
167
    src = json.loads(json.dumps(createLink(
168
        ['', [], []],
169
        createListStr('See theorem #'),
170
        [u'#theorem:first', u'theorem #']
171
    )))
172
    dest = json.loads(json.dumps(
173
        createLink(['', [], []],
174
        createListStr('See theorem 1.1'),
175
        [u'#theorem:first', u'theorem 1.1']
176
    )))
177
178
    pandoc_numbering.referencing(src['t'], src['c'], '', {})
179
    assert src == dest
180
181
def test_referencing_without_cite_shortcut():
182
    init()
183
184
    src = Para(createListStr('Theorem #theorem:first'))
185
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
186
187
    src = Cite([], createListStr('@theorem:first'))
188
    dest = Cite([], createListStr('@theorem:first'))
189
190
    assert pandoc_numbering.referencing(src['t'], src['c'], '', {}) == None
191
    assert src == dest
192
193
def test_referencing_with_cite_shortcut():
194
    init()
195
196
    meta = getMeta1()
197
198
    src = Para(createListStr('Theorem #theorem:first'))
199
    pandoc_numbering.numbering(src['t'], src['c'], u'', {})
200
201
    src = json.loads(json.dumps(Cite([], [Str(u'@theorem:first')])))
202
    dest = json.loads(json.dumps(createLink(['', [], []], [Str(u'1')], [u'#theorem:first', u''])))
203
204
    assert json.loads(json.dumps(pandoc_numbering.referencing(src['t'], src['c'], '', meta))) == dest
205
206
def test_referencing_format():
207
    init()
208
209
    meta = getMeta2()
210
211
    src = Para([Str(u'Exercise'), Space(), Str(u'#')])
212
    pandoc_numbering.numbering(src['t'], src['c'], u'', meta)
213
214
    src = json.loads(json.dumps(createLink(['', [], []], [], [u'#exercise:1', u''])))
215
    dest = json.loads(json.dumps(createLink(
216
        ['', [], []],
217
        [
218
            Span(
219
                ['', ['pandoc-numbering-link', 'exercise'], []],
220
                [
221
                    Span(['', ['description'], []], createListStr('Exercise')),
222
                    Span(['', ['title'], []], []),
223
                    Span(['', ['local'], []], createListStr('1')),
224
                    Span(['', ['global'], []], createListStr('1')),
225
                    Span(['', ['section'], []], createListStr('')),
226
                ]
227
            )
228
        ],
229
        [u'#exercise:1', u'']
230
    )))
231
232
    pandoc_numbering.referencing(src['t'], src['c'], '', meta)
233
234
    assert json.loads(json.dumps(src)) == dest
235
236
237