use strict;
use warnings;
-use Test::More tests => 15 + 2 * 18;
+use Test::More tests => 20 + 2 * 22;
use LaTeX::TikZ;
\draw [color=red] foo ;
RES
+my $foo2 = eval {
+ Tikz->raw('foo')
+ ->mod('->')
+};
+is $@, '', 'creating a modded raw set from a string doesn\'t croak';
+
+check $foo2, 'one modded raw set from a string', <<'RES';
+\draw [->] foo ;
+RES
+
sub failed_valid {
my ($tc) = @_;
qr/Validation failed for '\Q$tc\E'/;
}
eval {
- Tikz->raw('fail')
+ Tikz->raw([ 'fail' ])
->mod(Tikz->raw('epic'));
};
like $@, failed_valid('LaTeX::TikZ::Mod'), 'trying to use a non LTM mod croaks';
};
is $@, '', 'creating another colored raw set doesn\'t croak';
-check [ $foo, $baz ], 'mods folding 1', <<'RES';
+check Tikz->seq($foo, $baz), 'mods folding 1', <<'RES';
\begin{scope} [color=red]
\begin{scope} [line width=4.0pt]
\draw foo ;
\end{scope}
RES
-check [ $baz, $foo ], 'mods folding 2', <<'RES';
+check Tikz->seq($baz, $foo), 'mods folding 2', <<'RES';
\begin{scope} [color=red]
\draw baz ;
\begin{scope} [line width=4.0pt]
};
is $@, '', 'creating another raw set with modded width doesn\'t croak';
-check [ $foo, $baz, $qux ], 'mods folding 3', <<'RES';
+check Tikz->seq($foo, $baz, $qux), 'mods folding 3', <<'RES';
\begin{scope} [color=red]
\begin{scope} [line width=4.0pt]
\draw foo ;
\draw [line width=4.0pt] qux ;
RES
-check [ $foo, $qux, $baz ], 'mods folding 4', <<'RES';
+check Tikz->seq($foo, $qux, $baz), 'mods folding 4', <<'RES';
\begin{scope} [line width=4.0pt]
\begin{scope} [color=red]
\draw foo ;
\draw [color=red] baz ;
RES
-check [ $baz, $foo, $qux ], 'mods folding 5', <<'RES';
+check Tikz->seq($baz, $foo, $qux), 'mods folding 5', <<'RES';
\begin{scope} [color=red]
\draw baz ;
\begin{scope} [line width=4.0pt]
\draw [line width=4.0pt] qux ;
RES
-check [ $baz, $qux, $foo ], 'mods folding 6', <<'RES';
+check Tikz->seq($baz, $qux, $foo), 'mods folding 6', <<'RES';
\draw [color=red] baz ;
\draw [line width=4.0pt] qux ;
\begin{scope} [color=red,line width=4.0pt]
\end{scope}
RES
-check [ $qux, $foo, $baz ], 'mods folding 7', <<'RES';
+check Tikz->seq($qux, $foo, $baz), 'mods folding 7', <<'RES';
\begin{scope} [line width=4.0pt]
\draw qux ;
\begin{scope} [color=red]
\draw [color=red] baz ;
RES
-check [ $qux, $baz, $foo ], 'mods folding 8', <<'RES';
+check Tikz->seq($qux, $baz, $foo), 'mods folding 8', <<'RES';
\draw [line width=4.0pt] qux ;
\draw [color=red] baz ;
\begin{scope} [color=red,line width=4.0pt]
\end{scope}
\draw qux ;
\end{scope}
-\draw [raw3] baz ;
+\draw [raw2,raw3] baz ;
\end{scope}
RES
};
is $@, '', 'creating and adding another width mod doesn\'t croak';
-check $seq, 'mod covering 4', <<'RES';
+check $seq, 'mod covering 5', <<'RES';
\begin{scope} [color=red,raw2]
\begin{scope} [line width=4.0pt]
\begin{scope} [raw1]
\end{scope}
\draw qux ;
\end{scope}
-\draw [raw3] baz ;
+\draw [raw2,raw3] baz ;
\end{scope}
RES
+
+my ($fred, $fblue) = eval {
+ map Tikz->fill($_), qw/red blue/;
+};
+is $@, '', 'creating two fill mods doesn\'t croak';
+
+$seq = eval {
+ Tikz->seq(
+ Tikz->raw("foo")
+ ->mod($fred)
+ )->mod($fred);
+};
+is $@, '', 'creating a structure with two identical fill mods doesn\'t croak';
+
+check $seq, 'mod covering 6', <<'RES';
+\draw [fill=red] foo ;
+RES
+
+$seq = eval {
+ Tikz->seq(
+ Tikz->raw("foo")
+ ->mod($fblue)
+ )->mod($fred);
+};
+is $@, '', 'creating a structure with two different fill mods doesn\'t croak';
+
+check $seq, 'mod covering 7', <<'RES';
+\draw [fill=red,fill=blue] foo ;
+RES
+
+$seq = eval {
+ Tikz->seq(
+ Tikz->raw("foo")
+ ->mod($red)
+ )->mod($fred);
+};
+is $@, '', 'creating a structure with color and fill mods doesn\'t croak';
+
+check $seq, 'mod covering 8', <<'RES';
+\draw [fill=red,color=red] foo ;
+RES