6 use Test::More tests => 15 + 2 * 18;
10 my $tikz = Tikz->formatter(
15 my ($set, $desc, $exp) = @_;
17 local $Test::Builder::Level = $Test::Builder::Level + 1;
19 my ($head, $decl, $body) = eval {
20 $tikz->render(ref $set eq 'ARRAY' ? @$set : $set);
22 is $@, '', "$desc: no error";
24 unless (ref $exp eq 'ARRAY') {
25 $exp = [ split /\n/, $exp ];
27 unshift @$exp, '\begin{tikzpicture}';
28 push @$exp, '\end{tikzpicture}';
30 is_deeply $body, $exp, $desc;
36 is $@, '', 'creating a color mod doesn\'t croak';
42 is $@, '', 'creating a modded raw set doesn\'t croak';
44 check $foo, 'one modded raw set', <<'RES';
45 \draw [color=red] foo ;
50 qr/Validation failed for '\Q$tc\E'/;
55 ->mod(Tikz->raw('epic'));
57 like $@, failed_valid('LaTeX::TikZ::Mod'), 'trying to use a non LTM mod croaks';
62 is $@, '', 'creating a width mod doesn\'t croak';
67 is $@, '', 'adding another mod doesn\'t croak';
69 check $foo, 'one double modded raw set', <<'RES';
70 \draw [color=red,line width=4.0pt] foo ;
76 is $@, '', 're-adding an previously set mod doesn\'t croak';
78 check $foo, 'one triple modded raw set (with duplicates)', <<'RES';
79 \draw [color=red,line width=4.0pt] foo ;
82 my $bar = Tikz->raw('bar');
89 is $@, '', 'setting two mods in a row doesn\'t croak';
91 check $foo, 'one triple modded sequence of raw sets', <<'RES';
92 \begin{scope} [color=red,line width=4.0pt]
100 Tikz->seq(Tikz->raw("foo"))
104 is $@, '', 'creating nested modded sequences doesn\'t croak';
106 check $nested, 'nested modded sequences', <<'RES';
107 \draw [line width=4.0pt,color=red] foo ;
114 is $@, '', 'creating another colored raw set doesn\'t croak';
116 check [ $foo, $baz ], 'mods folding 1', <<'RES';
117 \begin{scope} [color=red]
118 \begin{scope} [line width=4.0pt]
126 check [ $baz, $foo ], 'mods folding 2', <<'RES';
127 \begin{scope} [color=red]
129 \begin{scope} [line width=4.0pt]
140 is $@, '', 'creating another raw set with modded width doesn\'t croak';
142 check [ $foo, $baz, $qux ], 'mods folding 3', <<'RES';
143 \begin{scope} [color=red]
144 \begin{scope} [line width=4.0pt]
150 \draw [line width=4.0pt] qux ;
153 check [ $foo, $qux, $baz ], 'mods folding 4', <<'RES';
154 \begin{scope} [line width=4.0pt]
155 \begin{scope} [color=red]
161 \draw [color=red] baz ;
164 check [ $baz, $foo, $qux ], 'mods folding 5', <<'RES';
165 \begin{scope} [color=red]
167 \begin{scope} [line width=4.0pt]
172 \draw [line width=4.0pt] qux ;
175 check [ $baz, $qux, $foo ], 'mods folding 6', <<'RES';
176 \draw [color=red] baz ;
177 \draw [line width=4.0pt] qux ;
178 \begin{scope} [color=red,line width=4.0pt]
184 check [ $qux, $foo, $baz ], 'mods folding 7', <<'RES';
185 \begin{scope} [line width=4.0pt]
187 \begin{scope} [color=red]
192 \draw [color=red] baz ;
195 check [ $qux, $baz, $foo ], 'mods folding 8', <<'RES';
196 \draw [line width=4.0pt] qux ;
197 \draw [color=red] baz ;
198 \begin{scope} [color=red,line width=4.0pt]
205 Tikz->seq($foo, $qux, $baz)
208 is $@, '', 'creating a modded sequence set doesn\'t croak';
210 check $seq, 'mod covering 1', <<'RES';
211 \begin{scope} [color=red]
212 \begin{scope} [line width=4.0pt]
222 Tikz->seq($seq, $qux)
223 ->mod(Tikz->color('blue'));
225 is $@, '', 'creating another modded sequence set doesn\'t croak';
227 check $seq2, 'mod covering 2', <<'RES';
228 \begin{scope} [color=blue]
229 \begin{scope} [color=red]
230 \begin{scope} [line width=4.0pt]
237 \draw [line width=4.0pt] qux ;
242 $foo->mod(Tikz->raw_mod('raw1'));
243 $seq->mod(Tikz->raw_mod('raw2'));
245 is $@, '', 'creating and adding raw mods doesn\'t croak';
247 check $seq, 'mod covering 3', <<'RES';
248 \begin{scope} [color=red,raw2]
249 \begin{scope} [line width=4.0pt]
261 $baz->mod(Tikz->raw_mod($_)) for qw/raw2 raw3/;
263 is $@, '', 'creating and adding another raw mod doesn\'t croak';
265 check $seq, 'mod covering 4', <<'RES';
266 \begin{scope} [color=red,raw2]
267 \begin{scope} [line width=4.0pt]
279 $bar->mod(Tikz->width(50));
281 is $@, '', 'creating and adding another width mod doesn\'t croak';
283 check $seq, 'mod covering 4', <<'RES';
284 \begin{scope} [color=red,raw2]
285 \begin{scope} [line width=4.0pt]
288 \draw [line width=8.0pt] bar ;