use strict;
use warnings;
-use Test::More tests => 8 + 2 * 12;
+use Test::More tests => 19 + 2 * 20;
use LaTeX::TikZ;
use LaTeX::TikZ::Formatter;
\end{scope}
RES
+my $set = Tikz->raw('wut');
+
+my $set_mod = eval {
+ $set->mod;
+};
+is $@, '', 'calling empty mod out of a set doesn\'t croak';
+is "$set_mod", "$set", 'calling empty mod out of a set returns the set';
+
+my $new = eval {
+ $set->mod(Tikz->raw_mod('raw1'));
+};
+is $@, '',
+ 'creating and applying a raw mod on a set in scalar context doesn\'t croak';
+is ref($new), 'LaTeX::TikZ::Set::Mod', 'new set is of the right kind';
+isnt "$new", "$set", 'new set is different from the old one';
+
+check $set, '', <<'RES';
+\draw wut ;
+RES
+
+check $new, '', <<'RES';
+\draw [raw1] wut ;
+RES
+
+eval {
+ $set->mod(Tikz->raw_mod('raw2'));
+ ();
+};
+is $@, '',
+ 'creating and applying a raw mod on a set in void context doesn\'t croak';
+is ref($new), 'LaTeX::TikZ::Set::Mod', 'new set is of the right kind';
+
+check $set, '', <<'RES';
+\draw [raw2] wut ;
+RES
+
+check $new, '', <<'RES';
+\draw [raw1] wut ;
+RES
+
my $baz = eval {
Tikz->raw('baz')
->mod($red);
\draw bar ;
\end{scope}
RES
+
+my $seq = eval {
+ Tikz->seq($foo, $qux, $baz)
+ ->mod($red);
+};
+is $@, '', 'creating a modded sequence set doesn\'t croak';
+
+check $seq, 'mod covering 1', <<'RES';
+\begin{scope} [color=red]
+\begin{scope} [line width=4.0pt]
+\draw foo ;
+\draw bar ;
+\draw qux ;
+\end{scope}
+\draw baz ;
+\end{scope}
+RES
+
+my $seq2 = eval {
+ Tikz->seq($seq, $qux)
+ ->mod(Tikz->color('blue'));
+};
+is $@, '', 'creating another modded sequence set doesn\'t croak';
+
+check $seq2, 'mod covering 2', <<'RES';
+\begin{scope} [color=blue]
+\begin{scope} [color=red]
+\begin{scope} [line width=4.0pt]
+\draw foo ;
+\draw bar ;
+\draw qux ;
+\end{scope}
+\draw baz ;
+\end{scope}
+\draw [line width=4.0pt] qux ;
+\end{scope}
+RES
+
+eval {
+ $foo->mod(Tikz->raw_mod('raw1'));
+ $seq->mod(Tikz->raw_mod('raw2'));
+};
+is $@, '', 'creating and adding raw mods doesn\'t croak';
+
+check $seq, 'mod covering 3', <<'RES';
+\begin{scope} [color=red,raw2]
+\begin{scope} [line width=4.0pt]
+\begin{scope} [raw1]
+\draw foo ;
+\draw bar ;
+\end{scope}
+\draw qux ;
+\end{scope}
+\draw baz ;
+\end{scope}
+RES
+
+eval {
+ $baz->mod(Tikz->raw_mod($_)) for qw/raw2 raw3/;
+};
+is $@, '', 'creating and adding another raw mod doesn\'t croak';
+
+check $seq, 'mod covering 4', <<'RES';
+\begin{scope} [color=red,raw2]
+\begin{scope} [line width=4.0pt]
+\begin{scope} [raw1]
+\draw foo ;
+\draw bar ;
+\end{scope}
+\draw qux ;
+\end{scope}
+\draw [raw3] baz ;
+\end{scope}
+RES