X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F10-set.t;h=f21f587578d972afa6e00e4a27f2ada043b80d16;hb=aba26c835113a0332c5480e99f86bfa67111de84;hp=39086420e6ec70279cd78c16398c2a04a1c6f60d;hpb=30cc7e83ac006f071c3fe119d696525d6637ff1d;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/t/10-set.t b/t/10-set.t index 3908642..f21f587 100644 --- a/t/10-set.t +++ b/t/10-set.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 5 + 2 * 4; +use Test::More tests => 12 + 2 * 7; use LaTeX::TikZ; use LaTeX::TikZ::Formatter; @@ -15,6 +15,8 @@ my $tikz = LaTeX::TikZ::Formatter->new( sub check { my ($set, $desc, $exp) = @_; + local $Test::Builder::Level = $Test::Builder::Level + 1; + my ($head, $decl, $body) = eval { $tikz->render(ref $set eq 'ARRAY' ? @$set : $set); }; @@ -74,3 +76,66 @@ check $seq3, 'two different raw sets and a sequence', <<'RES'; \draw bar ; \draw foo ; RES + +my $baz = eval { + Tikz->raw('baz'); +}; +is $@, '', 'creating yet another raw set doesn\'t croak'; + +eval { + $foo->add($baz); +}; +like $@, qr/Can't locate object method "add"/, + 'adding something to a raw set croaks'; + +eval { + $seq2->add($baz, $baz); +}; +is $@, '', 'adding something to a sequence set doesn\'t croak'; + +check $seq3, 'two different raw sets and an extended sequence', <<'RES'; +\draw bar ; +\draw foo ; +\draw bar ; +\draw baz ; +\draw baz ; +\draw foo ; +RES + +sub failed_valid { + my ($tc) = @_; + qr/Validation failed for '\Q$tc\E'/; +} + +my $err_path = qr/does not pass the type constraint because: Validation failed for 'Maybe\[ArrayRef\[LaTeX::TikZ::Set::Path::Elements\]\]/; + +eval { + Tikz->path($foo, $seq2); +}; +like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Path::Elements]]'), + 'creating a path that contains a sequence croaks'; + +my $path = eval { + Tikz->path($foo, $bar, $baz); +}; +is $@, '', 'creating a path set doesn\'t croak'; + +check $path, 'one path set', <<'RES'; +\draw foo bar baz ; +RES + +eval { + $path->add($foo); +}; +is $@, '', 'adding something to a path set doesn\'t croak'; + +check [ $path, $path ], 'two identical path sets', <<'RES'; +\draw foo bar baz foo ; +\draw foo bar baz foo ; +RES + +eval { + $path->add($seq2); +}; +like $@, failed_valid('LaTeX::TikZ::Set::Path::Elements'), + 'adding a sequence to a path croaks';