6 use Test::More tests => 19 + 2 * 14;
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 raw set doesn\'t croak';
38 check $foo, 'one raw set', <<'RES';
43 Tikz->seq($foo, $foo);
45 is $@, '', 'creating a 2-sequence doesn\'t croak';
47 check $seq2, 'two identical raw sets', <<'RES';
55 is $@, '', 'creating another raw set doesn\'t croak';
58 Tikz->seq($foo, $bar);
60 is $@, '', 'creating another 2-sequence doesn\'t croak';
62 check $seq2, 'two different raw sets', <<'RES';
68 Tikz->seq($bar, $seq2, $foo);
70 is $@, '', 'creating a complex sequence doesn\'t croak';
72 check $seq3, 'two different raw sets and a sequence', <<'RES';
82 is $@, '', 'creating yet another raw set doesn\'t croak';
87 like $@, qr/Can't locate object method "add"/,
88 'adding something to a raw set croaks';
91 $seq2->add($baz, $baz);
93 is $@, '', 'adding something to a sequence set doesn\'t croak';
95 check $seq3, 'two different raw sets and an extended sequence', <<'RES';
107 is $@, '', 'creating an empty sequence doesn\'t croak';
109 check $seq4, 'an empty sequence', '';
112 Tikz->seq(Tikz->seq);
114 is $@, '', 'creating a sequence that contains an empty sequence doesn\'t croak';
116 check $seq4, 'a sequence that contains an empty sequence', '';
119 Tikz->seq($foo, Tikz->seq);
122 'creating a sequence that contains a set and an empty sequence doesn\'t croak';
124 check $seq4, 'a sequence that contains a set and an empty sequence', <<'RES';
129 Tikz->seq(Tikz->seq, $foo);
132 'creating a sequence that contains an empty sequence and a set doesn\'t croak';
134 check $seq4, 'a sequence that contains an empty sequence and a set', <<'RES';
139 Tikz->seq($foo, $bar, Tikz->seq);
142 'creating a sequence that contains 2 sets and an empty sequence doesn\'t croak';
144 check $seq4, 'a sequence that contains 2 sets and an empty sequence', <<'RES';
150 Tikz->seq($foo, Tikz->seq, $bar);
152 is $@, '', 'creating a sequence that contains a set, an empty sequence, a set doesn\'t croak';
154 check $seq4, 'a sequence that contains a set, an empty sequence, a set',<<'RES';
160 Tikz->seq(Tikz->seq, $foo, $bar);
163 'creating a sequence that contains an empty sequence and 2 sets';
165 check $seq4, 'a sequence that contains an empty sequence and 2 sets', <<'RES';
172 qr/Validation failed for '\Q$tc\E'/;
176 Tikz->path($foo, $seq2);
178 like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Op]]'),
179 'creating a path that contains a sequence croaks';
182 Tikz->path($foo, $bar, $baz);
184 is $@, '', 'creating a path set doesn\'t croak';
186 check $path, 'one path set', <<'RES';
193 is $@, '', 'adding something to a path set doesn\'t croak';
195 check Tikz->seq($path, $path), 'two identical path sets', <<'RES';
196 \draw foo bar baz foo ;
197 \draw foo bar baz foo ;
203 like $@, failed_valid('LaTeX::TikZ::Set::Op'),
204 'adding a sequence to a path croaks';