use strict;
use warnings;
-use Test::More tests => 19 + 2 * 14;
+use Test::More tests => 29 + 2 * 21;
use LaTeX::TikZ;
}
eval {
- Tikz->path($foo, $seq2);
+ Tikz->union($foo, $seq2);
};
-like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Op]]'),
- '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);
+my $union = eval {
+ 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';
+check $union, 'one union set', <<'RES';
\draw foo bar baz ;
RES
eval {
- $path->add($foo);
+ $union->add($foo);
};
-is $@, '', 'adding something to a path set doesn\'t croak';
+is $@, '', 'adding something to a union set doesn\'t croak';
-check Tikz->seq($path, $path), 'two identical path sets', <<'RES';
+check Tikz->seq($union, $union), 'two identical union sets', <<'RES';
\draw foo bar baz foo ;
\draw foo bar baz foo ;
RES
eval {
- $path->add($seq2);
+ $union->add($seq2);
};
-like $@, failed_valid('LaTeX::TikZ::Set::Op'),
- 'adding a sequence to a path croaks';
+like $@, failed_valid('LaTeX::TikZ::Set::Path'),
+ 'adding a sequence to a union croaks';
+
+my $join = eval {
+ Tikz->join('--' => $foo, $bar, $baz);
+};
+is $@, '', 'creating an chain set joined with a string doesn\'t croak';
+
+check $join, 'one chain set joined with a string', <<'RES';
+\draw foo -- bar -- baz ;
+RES
+
+eval {
+ $join->add($foo);
+};
+is $@, '', 'adding a set to a chain set joined with a string doesn\'t croak';
+
+check $join, 'one appended chain set joined with a string', <<'RES';
+\draw foo -- bar -- baz -- foo ;
+RES
+
+$join = eval {
+ Tikz->join(sub { ' ' } => $foo, $bar, $baz);
+};
+is $@, '', 'creating an chain set joined with a coderef doesn\'t croak';
+
+check $join, 'one chain set joined with a string', <<'RES';
+\draw foo bar baz ;
+RES
+
+eval {
+ $join->add($foo);
+};
+is $@, '', 'adding a set to a chain set joined with a coderef doesn\'t croak';
+
+check $join, 'one appended chain set joined with a coderef', <<'RES';
+\draw foo bar baz foo ;
+RES
+
+$join = eval {
+ Tikz->join([ '', '..', '--' ] => $foo, $bar, $baz);
+};
+is $@, '', 'creating an chain set joined with an arrayref doesn\'t croak';
+
+check $join, 'one chain set joined with a string', <<'RES';
+\draw foo bar .. baz ;
+RES
+
+eval {
+ $join->add($foo);
+};
+is $@, '', 'adding a set to a chain set joined with an arrayref doesn\'t croak';
+
+check $join, 'one appended chain set joined with an arrayref', <<'RES';
+\draw foo bar .. baz -- foo ;
+RES
+
+eval {
+ $join->add($bar);
+};
+is $@, '',
+ 'adding too many sets to a chain set joined with an arrayref doesn\'t croak';
+
+eval {
+ using()->render($join);
+};
+like $@, qr/^Invalid connector/,
+ 'adding too many sets to a chain set joined with an arrayref croaks';
+
+my $chain = eval {
+ Tikz->chain($foo => '--' => $bar => '->' => $baz);
+};
+is $@, '', 'creating an chain set with chain doesn\'t croak';
+
+check $chain, 'one chain set from chain', <<'RES';
+\draw foo -- bar -> baz ;
+RES
+
+eval {
+ Tikz->chain($foo, '--', $bar, '--');
+};
+like $@, qr/^The 'chain' command expects an odd number of arguments/,
+ 'creating an union that contains a sequence croaks';