asciidoctor-diagram 1.5.18 → 1.5.19

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,478 @@
1
+ require_relative 'test_helper'
2
+
3
+ code = <<-eos
4
+ plot [0:5][0:20] x**2 title 'O(n^2)'
5
+ eos
6
+
7
+ describe Asciidoctor::Diagram::GnuplotBlockMacroProcessor do
8
+ it "should generate PNG images when format is set to 'png'" do
9
+ File.write('gnuplot.txt', code)
10
+
11
+ doc = <<-eos
12
+ = Hello, Gnuplot!
13
+ Doc Writer <doc@example.com>
14
+
15
+ == First Section
16
+
17
+ gnuplot::gnuplot.txt[format="png"]
18
+ eos
19
+
20
+ d = load_asciidoc doc
21
+ expect(d).to_not be_nil
22
+
23
+ b = d.find { |bl| bl.context == :image }
24
+ expect(b).to_not be_nil
25
+
26
+ expect(b.content_model).to eq :empty
27
+
28
+ target = b.attributes['target']
29
+ expect(target).to_not be_nil
30
+ expect(target).to match(/\.png$/)
31
+ expect(File.exist?(target)).to be true
32
+
33
+ expect(b.attributes['width']).to_not be_nil
34
+ expect(b.attributes['height']).to_not be_nil
35
+ end
36
+
37
+
38
+ it "should generate SVG images when format is set to 'svg'" do
39
+ File.write('gnuplot.txt', code)
40
+
41
+ doc = <<-eos
42
+ = Hello, Gnuplot!
43
+ Doc Writer <doc@example.com>
44
+
45
+ == First Section
46
+
47
+ gnuplot::gnuplot.txt[format="svg"]
48
+ eos
49
+
50
+ d = load_asciidoc doc
51
+ expect(d).to_not be_nil
52
+
53
+ b = d.find { |bl| bl.context == :image }
54
+ expect(b).to_not be_nil
55
+
56
+ expect(b.content_model).to eq :empty
57
+
58
+ target = b.attributes['target']
59
+ expect(target).to_not be_nil
60
+ expect(target).to match(/\.svg/)
61
+ expect(File.exist?(target)).to be true
62
+
63
+ expect(b.attributes['width']).to_not be_nil
64
+ expect(b.attributes['height']).to_not be_nil
65
+ end
66
+
67
+ it "should generate GIF images when format is set to 'gif'" do
68
+ File.write('gnuplot.txt', code)
69
+
70
+ doc = <<-eos
71
+ = Hello, Gnuplot!
72
+ Doc Writer <doc@example.com>
73
+
74
+ == First Section
75
+
76
+ gnuplot::gnuplot.txt[format="gif"]
77
+ eos
78
+
79
+ d = load_asciidoc doc
80
+ expect(d).to_not be_nil
81
+
82
+ b = d.find { |bl| bl.context == :image }
83
+ expect(b).to_not be_nil
84
+
85
+ expect(b.content_model).to eq :empty
86
+
87
+ target = b.attributes['target']
88
+ expect(target).to_not be_nil
89
+ expect(target).to match(/\.gif$/)
90
+ expect(File.exist?(target)).to be true
91
+
92
+ expect(b.attributes['width']).to_not be_nil
93
+ expect(b.attributes['height']).to_not be_nil
94
+ end
95
+
96
+
97
+ it "should generate literal blocks when format is set to 'txt'" do
98
+ doc = <<-eos
99
+ = Hello, Gnuplot!
100
+ Doc Writer <doc@example.com>
101
+
102
+ == First Section
103
+
104
+ [gnuplot, format="txt"]
105
+ ----
106
+ #{code}
107
+ ----
108
+ eos
109
+
110
+ d = load_asciidoc doc
111
+ expect(d).to_not be_nil
112
+
113
+ b = d.find { |bl| bl.context == :literal }
114
+ expect(b).to_not be_nil
115
+
116
+ expect(b.content_model).to eq :verbatim
117
+
118
+ expect(b.attributes['target']).to be_nil
119
+ end
120
+
121
+
122
+ end
123
+
124
+ describe Asciidoctor::Diagram::GnuplotBlockProcessor do
125
+ it "should generate PNG images when format is set to 'png'" do
126
+ doc = <<-eos
127
+ = Hello, Gnuplot!
128
+ Doc Writer <doc@example.com>
129
+
130
+ == First Section
131
+
132
+ [gnuplot, format="png"]
133
+ ----
134
+ #{code}
135
+ ----
136
+ eos
137
+
138
+ d = load_asciidoc doc
139
+ expect(d).to_not be_nil
140
+
141
+ b = d.find { |bl| bl.context == :image }
142
+ expect(b).to_not be_nil
143
+
144
+ expect(b.content_model).to eq :empty
145
+
146
+ target = b.attributes['target']
147
+ expect(target).to_not be_nil
148
+ expect(target).to match(/\.png$/)
149
+ expect(File.exist?(target)).to be true
150
+
151
+ expect(b.attributes['width']).to_not be_nil
152
+ expect(b.attributes['height']).to_not be_nil
153
+ end
154
+
155
+ it "should generate SVG images when format is set to 'svg'" do
156
+ doc = <<-eos
157
+ = Hello, Gnuplot!
158
+ Doc Writer <doc@example.com>
159
+
160
+ == First Section
161
+
162
+ [gnuplot, format="svg"]
163
+ ----
164
+ #{code}
165
+ ----
166
+ eos
167
+
168
+ d = load_asciidoc doc
169
+ expect(d).to_not be_nil
170
+
171
+ b = d.find { |bl| bl.context == :image }
172
+ expect(b).to_not be_nil
173
+
174
+ expect(b.content_model).to eq :empty
175
+
176
+ target = b.attributes['target']
177
+ expect(target).to_not be_nil
178
+ expect(target).to match(/\.svg/)
179
+ expect(File.exist?(target)).to be true
180
+
181
+ expect(b.attributes['width']).to_not be_nil
182
+ expect(b.attributes['height']).to_not be_nil
183
+ end
184
+
185
+ it "should raise an error when when format is set to an invalid value" do
186
+ doc = <<-eos
187
+ = Hello, Gnuplot!
188
+ Doc Writer <doc@example.com>
189
+
190
+ == First Section
191
+
192
+ [gnuplot, format="foobar"]
193
+ ----
194
+ ----
195
+ eos
196
+
197
+ expect { load_asciidoc doc }.to raise_error(/support.*format/i)
198
+ end
199
+
200
+ it "should not regenerate images when source has not changed" do
201
+ File.write('gnuplot.txt', code)
202
+
203
+ doc = <<-eos
204
+ = Hello, Gnuplot!
205
+ Doc Writer <doc@example.com>
206
+
207
+ == First Section
208
+
209
+ gnuplot::gnuplot.txt
210
+
211
+ [gnuplot, format="png"]
212
+ ----
213
+ #{code}
214
+ ----
215
+ eos
216
+
217
+ d = load_asciidoc doc
218
+ b = d.find { |bl| bl.context == :image }
219
+ expect(b).to_not be_nil
220
+ target = b.attributes['target']
221
+ mtime1 = File.mtime(target)
222
+
223
+ sleep 1
224
+
225
+ d = load_asciidoc doc
226
+
227
+ mtime2 = File.mtime(target)
228
+
229
+ expect(mtime2).to eq mtime1
230
+ end
231
+
232
+ it "should handle two block macros with the same source" do
233
+ File.write('gnuplot.txt', code)
234
+
235
+ doc = <<-eos
236
+ = Hello, Gnuplot!
237
+ Doc Writer <doc@example.com>
238
+
239
+ == First Section
240
+
241
+ gnuplot::gnuplot.txt[]
242
+ gnuplot::gnuplot.txt[]
243
+ eos
244
+
245
+ load_asciidoc doc
246
+ expect(File.exist?('gnuplot.png')).to be true
247
+ end
248
+
249
+ it "should respect target attribute in block macros" do
250
+ File.write('gnuplot.txt', code)
251
+
252
+ doc = <<-eos
253
+ = Hello, Gnuplot!
254
+ Doc Writer <doc@example.com>
255
+
256
+ == First Section
257
+
258
+ gnuplot::gnuplot.txt["foobar"]
259
+ gnuplot::gnuplot.txt["foobaz"]
260
+ eos
261
+
262
+ load_asciidoc doc
263
+ expect(File.exist?('foobar.png')).to be true
264
+ expect(File.exist?('foobaz.png')).to be true
265
+ expect(File.exist?('gnuplot.png')).to be false
266
+ end
267
+ it "should generate images with user defined size" do
268
+ doc = <<-eos
269
+ = Hello, Gnuplot!
270
+ Doc Writer <doc@example.com>
271
+
272
+ == First Section
273
+
274
+ [gnuplot, format="png",width="800", height="600"]
275
+ ----
276
+ #{code}
277
+ ----
278
+ eos
279
+
280
+ d = load_asciidoc doc
281
+ expect(d).to_not be_nil
282
+
283
+ b = d.find { |bl| bl.context == :image }
284
+ expect(b).to_not be_nil
285
+
286
+ expect(b.content_model).to eq :empty
287
+
288
+ target = b.attributes['target']
289
+ expect(target).to_not be_nil
290
+ expect(target).to match(/\.png$/)
291
+ expect(File.exist?(target)).to be true
292
+
293
+ expect(b.attributes['width']).to_not be_nil
294
+ expect(b.attributes['height']).to_not be_nil
295
+ end
296
+
297
+ it "should generate nocrop/notrasparent images" do
298
+ doc = <<-eos
299
+ = Hello, Gnuplot!
300
+ Doc Writer <doc@example.com>
301
+
302
+ == First Section
303
+
304
+ [gnuplot, format="png", crop=false, transparent=false]
305
+ ----
306
+ #{code}
307
+ ----
308
+ eos
309
+
310
+ d = load_asciidoc doc
311
+ expect(d).to_not be_nil
312
+
313
+ b = d.find { |bl| bl.context == :image }
314
+ expect(b).to_not be_nil
315
+
316
+ expect(b.content_model).to eq :empty
317
+
318
+ target = b.attributes['target']
319
+ expect(target).to_not be_nil
320
+ expect(target).to match(/\.png$/)
321
+ expect(File.exist?(target)).to be true
322
+
323
+ expect(b.attributes['width']).to_not be_nil
324
+ expect(b.attributes['height']).to_not be_nil
325
+ end
326
+
327
+ it "should generate crop/trasparent images" do
328
+ doc = <<-eos
329
+ = Hello, Gnuplot!
330
+ Doc Writer <doc@example.com>
331
+
332
+ == First Section
333
+
334
+ [gnuplot, format="png", crop=true, transparent=true]
335
+ ----
336
+ #{code}
337
+ ----
338
+ eos
339
+
340
+ d = load_asciidoc doc
341
+ expect(d).to_not be_nil
342
+
343
+ b = d.find { |bl| bl.context == :image }
344
+ expect(b).to_not be_nil
345
+
346
+ expect(b.content_model).to eq :empty
347
+
348
+ target = b.attributes['target']
349
+ expect(target).to_not be_nil
350
+ expect(target).to match(/\.png$/)
351
+ expect(File.exist?(target)).to be true
352
+
353
+ expect(b.attributes['width']).to_not be_nil
354
+ expect(b.attributes['height']).to_not be_nil
355
+ end
356
+
357
+ it "should generate image with font name" do
358
+ doc = <<-eos
359
+ = Hello, Gnuplot!
360
+ Doc Writer <doc@example.com>
361
+
362
+ == First Section
363
+
364
+ [gnuplot, format="png", font="Arial"]
365
+ ----
366
+ #{code}
367
+ ----
368
+ eos
369
+
370
+ d = load_asciidoc doc
371
+ expect(d).to_not be_nil
372
+
373
+ b = d.find { |bl| bl.context == :image }
374
+ expect(b).to_not be_nil
375
+
376
+ expect(b.content_model).to eq :empty
377
+
378
+ target = b.attributes['target']
379
+ expect(target).to_not be_nil
380
+ expect(target).to match(/\.png$/)
381
+ expect(File.exist?(target)).to be true
382
+
383
+ expect(b.attributes['width']).to_not be_nil
384
+ expect(b.attributes['height']).to_not be_nil
385
+ end
386
+
387
+ it "should generate image with font name and size" do
388
+ doc = <<-eos
389
+ = Hello, Gnuplot!
390
+ Doc Writer <doc@example.com>
391
+
392
+ == First Section
393
+
394
+ [gnuplot, format="png", font="Arial,11"]
395
+ ----
396
+ #{code}
397
+ ----
398
+ eos
399
+
400
+ d = load_asciidoc doc
401
+ expect(d).to_not be_nil
402
+
403
+ b = d.find { |bl| bl.context == :image }
404
+ expect(b).to_not be_nil
405
+
406
+ expect(b.content_model).to eq :empty
407
+
408
+ target = b.attributes['target']
409
+ expect(target).to_not be_nil
410
+ expect(target).to match(/\.png$/)
411
+ expect(File.exist?(target)).to be true
412
+
413
+ expect(b.attributes['width']).to_not be_nil
414
+ expect(b.attributes['height']).to_not be_nil
415
+ end
416
+
417
+ it "should generate image with font name and scale" do
418
+ doc = <<-eos
419
+ = Hello, Gnuplot!
420
+ Doc Writer <doc@example.com>
421
+
422
+ == First Section
423
+
424
+ [gnuplot, format="png", font="Arial", scale="0.5"]
425
+ ----
426
+ #{code}
427
+ ----
428
+ eos
429
+
430
+ d = load_asciidoc doc
431
+ expect(d).to_not be_nil
432
+
433
+ b = d.find { |bl| bl.context == :image }
434
+ expect(b).to_not be_nil
435
+
436
+ expect(b.content_model).to eq :empty
437
+
438
+ target = b.attributes['target']
439
+ expect(target).to_not be_nil
440
+ expect(target).to match(/\.png$/)
441
+ expect(File.exist?(target)).to be true
442
+
443
+ expect(b.attributes['width']).to_not be_nil
444
+ expect(b.attributes['height']).to_not be_nil
445
+ end
446
+
447
+ it %(should generate image with font background="red") do
448
+ doc = <<-eos
449
+ = Hello, Gnuplot!
450
+ Doc Writer <doc@example.com>
451
+
452
+ == First Section
453
+
454
+ [gnuplot, format="png", background="red"]
455
+ ----
456
+ #{code}
457
+ ----
458
+ eos
459
+
460
+ d = load_asciidoc doc
461
+ expect(d).to_not be_nil
462
+
463
+ b = d.find { |bl| bl.context == :image }
464
+ expect(b).to_not be_nil
465
+
466
+ expect(b.content_model).to eq :empty
467
+
468
+ target = b.attributes['target']
469
+ expect(target).to_not be_nil
470
+ expect(target).to match(/\.png$/)
471
+ expect(File.exist?(target)).to be true
472
+
473
+ expect(b.attributes['width']).to_not be_nil
474
+ expect(b.attributes['height']).to_not be_nil
475
+ end
476
+
477
+
478
+ end