X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F23-pattern.t;h=03703223044679d1ef859b142e54a38a81df1ff2;hb=0e7c2e9d009574e0d337db855d433a8e07d04512;hp=d5aa47401835719197f2be34e94ed5b6e0b2cfe0;hpb=d934d1a7f7268b248687f14e0ede2723010bf243;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/t/23-pattern.t b/t/23-pattern.t index d5aa474..0370322 100644 --- a/t/23-pattern.t +++ b/t/23-pattern.t @@ -3,23 +3,23 @@ use strict; use warnings; -use Test::More tests => 2 + 4 * 2; +use Test::More tests => 5 + 4 * 5; use LaTeX::TikZ; -my $tikz = Tikz->formatter( +use lib 't/lib'; +use LaTeX::TikZ::TestHelper; + +using Tikz->formatter( format => '%d', ); -sub check { +sub check_patterns { my ($set, $desc, $exp_decl, $exp) = @_; local $Test::Builder::Level = $Test::Builder::Level + 1; - my ($head, $decl, $body) = eval { - $tikz->render(ref $set eq 'ARRAY' ? @$set : $set); - }; - is $@, '', "$desc: no error"; + my ($head, $decl, $body) = check($set, $desc, $exp); is $head->[-1], '\usetikzlibrary{patterns}', "$desc: header"; @@ -27,14 +27,7 @@ sub check { $exp_decl = [ split /\n/, $exp_decl ]; } - unless (ref $exp eq 'ARRAY') { - $exp = [ split /\n/, $exp ]; - } - unshift @$exp, '\begin{tikzpicture}'; - push @$exp, '\end{tikzpicture}'; - is_deeply $decl, $exp_decl, "$desc: declarations"; - is_deeply $body, $exp, "$desc: body"; } my $lines = eval { @@ -43,11 +36,11 @@ my $lines = eval { }; is $@, '', 'creating a line pattern doesn\'t croak'; -check $lines, 'a line pattern', <<'DECL', <<'BODY'; -\pgfdeclarepatternformonly{pata}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{0.3pt}{0.3pt}}{\pgfqpoint{0.2pt}{0.2pt}}{ +check_patterns $lines, 'a line pattern', <<'DECL', <<'BODY'; +\pgfdeclarepatternformonly{pata}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ \pgfsetlinewidth{0.2pt} -\pgfpathmoveto{\pgfqpoint{-0.2pt}{0.1pt}} -\pgfpathlineto{\pgfqpoint{0.3pt}{0.1pt}} +\pgfpathmoveto{\pgfqpoint{-0.2pt}{0.8pt}} +\pgfpathlineto{\pgfqpoint{1.8pt}{0.8pt}} \pgfusepath{stroke} } DECL @@ -60,11 +53,84 @@ my $dots = eval { }; is $@, '', 'creating a dot pattern doesn\'t croak'; -check $dots, 'a dot pattern', <<'DECL', <<'BODY'; -\pgfdeclarepatternformonly{patb}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{0.3pt}{0.3pt}}{\pgfqpoint{0.2pt}{0.2pt}}{ -\pgfpathcircle{\pgfqpoint{0.1pt}{0.1pt}}{0.2pt} +check_patterns $dots, 'a dot pattern', <<'DECL', <<'BODY'; +\pgfdeclarepatternformonly{patb}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfpathcircle{\pgfqpoint{0.8pt}{0.8pt}}{0.2pt} \pgfusepath{fill} } DECL \draw [fill,pattern=patb] foo ; BODY + +my ($lines_mod) = $lines->mods; +my ($dots_mod) = $dots->mods; + +my $seq = eval { + Tikz->seq( + Tikz->raw('foo') + ->mod($lines_mod) + )->mod($lines_mod); +}; +is $@, '', 'creating a sequence with two identic patterns doesn\'t croak'; + +check_patterns $seq, 'a sequence with two identic patterns', <<'DECL', <<'BODY'; +\pgfdeclarepatternformonly{pata}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfsetlinewidth{0.2pt} +\pgfpathmoveto{\pgfqpoint{-0.2pt}{0.8pt}} +\pgfpathlineto{\pgfqpoint{1.8pt}{0.8pt}} +\pgfusepath{stroke} +} +DECL +\draw [fill,pattern=pata] foo ; +BODY + +$seq = eval { + Tikz->seq( + Tikz->raw('foo') + ->mod($lines_mod) + )->mod(Tikz->pattern(class => 'Lines', direction => 'vertical')); +}; +is $@, '', + 'creating a sequence with two orthogonal line patterns doesn\'t croak'; + +check_patterns $seq, 'a sequence with two orthogonal line patterns', + <<'DECL', <<'BODY'; +\pgfdeclarepatternformonly{patc}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfsetlinewidth{0.2pt} +\pgfpathmoveto{\pgfqpoint{0.8pt}{-0.2pt}} +\pgfpathlineto{\pgfqpoint{0.8pt}{1.8pt}} +\pgfusepath{stroke} +} +\pgfdeclarepatternformonly{pata}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfsetlinewidth{0.2pt} +\pgfpathmoveto{\pgfqpoint{-0.2pt}{0.8pt}} +\pgfpathlineto{\pgfqpoint{1.8pt}{0.8pt}} +\pgfusepath{stroke} +} +DECL +\draw [fill,pattern=patc,pattern=pata] foo ; +BODY + +$seq = eval { + Tikz->seq( + Tikz->raw('foo') + ->mod($lines_mod) + )->mod($dots_mod); +}; +is $@, '', 'creating a sequence with two different patterns doesn\'t croak'; + +check_patterns $seq, 'a sequence with two different patterns', + <<'DECL', <<'BODY'; +\pgfdeclarepatternformonly{patb}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfpathcircle{\pgfqpoint{0.8pt}{0.8pt}}{0.2pt} +\pgfusepath{fill} +} +\pgfdeclarepatternformonly{pata}{\pgfqpoint{-0.2pt}{-0.2pt}}{\pgfqpoint{1.8pt}{1.8pt}}{\pgfqpoint{1.6pt}{1.6pt}}{ +\pgfsetlinewidth{0.2pt} +\pgfpathmoveto{\pgfqpoint{-0.2pt}{0.8pt}} +\pgfpathlineto{\pgfqpoint{1.8pt}{0.8pt}} +\pgfusepath{stroke} +} +DECL +\draw [fill,pattern=patb,pattern=pata] foo ; +BODY