use strict;
use warnings;
-use Test::More tests => 12 + 2 * 7;
+use Test::More tests => 19 + 2 * 14;
use LaTeX::TikZ;
-use LaTeX::TikZ::Formatter;
-my $tikz = LaTeX::TikZ::Formatter->new(
+use lib 't/lib';
+use LaTeX::TikZ::TestHelper;
+
+using Tikz->formatter(
format => '%d',
);
-sub check {
- my ($set, $desc, $exp) = @_;
-
- my ($head, $decl, $body) = eval {
- $tikz->render(ref $set eq 'ARRAY' ? @$set : $set);
- };
- is $@, '', "$desc: no error";
-
- unless (ref $exp eq 'ARRAY') {
- $exp = [ split /\n/, $exp ];
- }
- unshift @$exp, '\begin{tikzpicture}';
- push @$exp, '\end{tikzpicture}';
-
- is_deeply $body, $exp, $desc;
-}
-
my $foo = eval {
Tikz->raw('foo');
};
\draw foo ;
RES
+my $seq4 = eval {
+ Tikz->seq;
+};
+is $@, '', 'creating an empty sequence doesn\'t croak';
+
+check $seq4, 'an empty sequence', '';
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq);
+};
+is $@, '', 'creating a sequence that contains an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains an empty sequence', '';
+
+$seq4 = eval {
+ Tikz->seq($foo, Tikz->seq);
+};
+is $@, '',
+ 'creating a sequence that contains a set and an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains a set and an empty sequence', <<'RES';
+\draw foo ;
+RES
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq, $foo);
+};
+is $@, '',
+ 'creating a sequence that contains an empty sequence and a set doesn\'t croak';
+
+check $seq4, 'a sequence that contains an empty sequence and a set', <<'RES';
+\draw foo ;
+RES
+
+$seq4 = eval {
+ Tikz->seq($foo, $bar, Tikz->seq);
+};
+is $@, '',
+'creating a sequence that contains 2 sets and an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains 2 sets and an empty sequence', <<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
+$seq4 = eval {
+ Tikz->seq($foo, Tikz->seq, $bar);
+};
+is $@, '', 'creating a sequence that contains a set, an empty sequence, a set doesn\'t croak';
+
+check $seq4, 'a sequence that contains a set, an empty sequence, a set',<<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq, $foo, $bar);
+};
+is $@, '',
+'creating a sequence that contains an empty sequence and 2 sets';
+
+check $seq4, 'a sequence that contains an empty sequence and 2 sets', <<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
sub failed_valid {
my ($tc) = @_;
qr/Validation failed for '\Q$tc\E'/;
}
-my $err_path = qr/does not pass the type constraint because: Validation failed for 'Maybe\[ArrayRef\[LaTeX::TikZ::Set::Path::Elements\]\]/;
-
eval {
- Tikz->path($foo, $seq2);
+ Tikz->union($foo, $seq2);
};
-like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Path::Elements]]'),
- 'creating a path that contains a sequence croaks';
+like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Path]]'),
+ 'creating an union that contains a sequence croaks';
my $path = eval {
- Tikz->path($foo, $bar, $baz);
+ Tikz->union($foo, $bar, $baz);
};
-is $@, '', 'creating a path set doesn\'t croak';
+is $@, '', 'creating an union set doesn\'t croak';
check $path, 'one path set', <<'RES';
\draw foo bar baz ;
};
is $@, '', 'adding something to a path set doesn\'t croak';
-check [ $path, $path ], 'two identical path sets', <<'RES';
+check Tikz->seq($path, $path), 'two identical path sets', <<'RES';
\draw foo bar baz foo ;
\draw foo bar baz foo ;
RES
eval {
$path->add($seq2);
};
-like $@, failed_valid('LaTeX::TikZ::Set::Path::Elements'),
+like $@, failed_valid('LaTeX::TikZ::Set::Path'),
'adding a sequence to a path croaks';