X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F22-clip.t;h=0b0ac328ddfca94b8bd3ea9e1446650cc9ab6198;hb=b212ec02c4010c5200e7741d432397bfede7ca50;hp=800be76b528e3528da75cd1b8a96f51e1b783e10;hpb=038a21c751dcd34f83857e095d935bfa07b6b679;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/t/22-clip.t b/t/22-clip.t index 800be76..0b0ac32 100644 --- a/t/22-clip.t +++ b/t/22-clip.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 2 + 2 * 9; +use Test::More tests => 8 + 2 * 16; use LaTeX::TikZ; @@ -154,3 +154,144 @@ check $seq2, 'mods folding with clips 7', <<'RES'; \end{scope} RES +$seq2->layer('top'); +$seq->layer('bottom'); + +check $seq2, 'mods folding with clips and layers', <<'RES'; +\begin{pgfonlayer}{top} +\begin{scope} [color=red] +\clip clip2 ; +\begin{scope} +\clip clip1 ; +\begin{pgfonlayer}{bottom} +\begin{scope} [color=red] +\clip clip2 ; +\begin{scope} +\clip clip1 ; +\draw foo ; +\draw bar ; +\end{scope} +\end{scope} +\end{pgfonlayer} +\draw baz ; +\end{scope} +\end{scope} +\end{pgfonlayer} +RES + +my $a = Tikz->point; +my $b = Tikz->point(4, 2); +my $c = Tikz->point(1, 3); +my $d = Tikz->point(2, 1); + +my $r1 = Tikz->rectangle($a, $b); +my $r2 = Tikz->rectangle($c, $d); + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($r1) + )->clip($r2); +}; +is $@, '', 'two intersecting rectangle clips doesn\'t croak'; + +check $seq, 'two intersecting rectangle clips', <<'RES'; +\begin{scope} +\clip (1cm,3cm) rectangle (2cm,1cm) ; +\begin{scope} +\clip (0cm,0cm) rectangle (4cm,2cm) ; +\draw foo ; +\end{scope} +\end{scope} +RES + +$r2 = Tikz->rectangle($a, $d); # $r2 is a subset of $r1 + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($r1) + )->clip($r2); +}; +is $@, '', 'two overlapping rectangle clips 1 doesn\'t croak'; + +check $seq, 'two overlapping rectangle clips 1', <<'RES'; +\begin{scope} +\clip (0cm,0cm) rectangle (2cm,1cm) ; +\draw foo ; +\end{scope} +RES + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($r2) + )->clip($r1); +}; +is $@, '', 'two overlapping rectangle clips 2 doesn\'t croak'; + +check $seq, 'two overlapping rectangle clips 2', <<'RES'; +\begin{scope} +\clip (0cm,0cm) rectangle (4cm,2cm) ; +\begin{scope} +\clip (0cm,0cm) rectangle (2cm,1cm) ; +\draw foo ; +\end{scope} +\end{scope} +RES + +my $c1 = Tikz->circle($a, 2); +my $c2 = Tikz->circle($d, 3); + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($c1) + )->clip($c2); +}; +is $@, '', 'two intersecting circle clips doesn\'t croak'; + +check $seq, 'two intersecting circle clips', <<'RES'; +\begin{scope} +\clip (2cm,1cm) circle (3cm) ; +\begin{scope} +\clip (0cm,0cm) circle (2cm) ; +\draw foo ; +\end{scope} +\end{scope} +RES + +$c2 = Tikz->circle($a, 1); # $c2 is a subset of $c1 + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($c1) + )->clip($c2); +}; +is $@, '', 'two overlapping circle clips 1 doesn\'t croak'; + +check $seq, 'two overlapping circle clips 1', <<'RES'; +\begin{scope} +\clip (0cm,0cm) circle (1cm) ; +\draw foo ; +\end{scope} +RES + +$seq = eval { + Tikz->seq( + Tikz->raw("foo") + ->clip($c2) + )->clip($c1); +}; +is $@, '', 'two overlapping circle clips 2 doesn\'t croak'; + +check $seq, 'two overlapping circle clips 2', <<'RES'; +\begin{scope} +\clip (0cm,0cm) circle (2cm) ; +\begin{scope} +\clip (0cm,0cm) circle (1cm) ; +\draw foo ; +\end{scope} +\end{scope} +RES