]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blob - t/20-mod.t
Fix appending to a Set::Mod
[perl/modules/LaTeX-TikZ.git] / t / 20-mod.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 6 + 2 * 4;
7
8 use LaTeX::TikZ;
9 use LaTeX::TikZ::Formatter;
10
11 my $tikz = LaTeX::TikZ::Formatter->new(
12  format => '%d',
13 );
14
15 sub check {
16  my ($set, $desc, $exp) = @_;
17
18  my ($head, $decl, $body) = eval {
19   $tikz->render(ref $set eq 'ARRAY' ? @$set : $set);
20  };
21  is $@, '', "$desc: no error";
22
23  unless (ref $exp eq 'ARRAY') {
24   $exp = [ split /\n/, $exp ];
25  }
26  unshift @$exp, '\begin{tikzpicture}';
27  push    @$exp, '\end{tikzpicture}';
28
29  is_deeply $body, $exp, $desc;
30 }
31
32 my $red = eval {
33  Tikz->color('red');
34 };
35 is $@, '', 'creating a color mod doesn\'t croak';
36
37 my $foo = eval {
38  Tikz->raw('foo')
39      ->mod($red)
40 };
41 is $@, '', 'creating a modded raw set doesn\'t croak';
42
43 check $foo, 'one modded raw set', <<'RES';
44 \draw [color=red] foo ;
45 RES
46
47 my $width = eval {
48  Tikz->width(25);
49 };
50 is $@, '', 'creating a width mod doesn\'t croak';
51
52 eval {
53  $foo->mod($width);
54 };
55 is $@, '', 'adding another mod doesn\'t croak';
56
57 check $foo, 'one double modded raw set', <<'RES';
58 \draw [color=red,line width=4.0pt] foo ;
59 RES
60
61 eval {
62  $foo->mod($red);
63 };
64 is $@, '', 're-adding an previously set mod doesn\'t croak';
65
66 check $foo, 'one triple modded raw set (with duplicates)', <<'RES';
67 \draw [color=red,line width=4.0pt] foo ;
68 RES
69
70 my $bar = Tikz->raw('bar');
71 eval {
72  $foo->add($bar);
73 };
74 is $@, '', 'appending to a modded set doesn\'t croak';
75
76 check $foo, 'one triple modded sequence of raw sets (with duplicates)', <<'RES';
77 \begin{scope} [color=red,line width=4.0pt]
78 \draw foo ;
79 \draw bar ;
80 \end{scope}
81 RES