X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F12-geo.t;h=87832f7c75d0d288e00489b74698791880af5046;hb=0e7c2e9d009574e0d337db855d433a8e07d04512;hp=3a7eef7e65a32dd702f49ac12b476d19915158f9;hpb=080eb1e263eb7c3700a9ebfd96522eaa534a0b6c;p=perl%2Fmodules%2FLaTeX-TikZ.git diff --git a/t/12-geo.t b/t/12-geo.t index 3a7eef7..87832f7 100644 --- a/t/12-geo.t +++ b/t/12-geo.t @@ -3,35 +3,19 @@ use strict; use warnings; -use Test::More tests => (11 + 2 * 5) + 2 * (10 + 2 * 3); +use Test::More tests => (16 + 2 * 5) + 2 * (13 + 2 * 3); use Math::Complex; use LaTeX::TikZ; -my $tikz = Tikz->formatter( +use lib 't/lib'; +use LaTeX::TikZ::TestHelper; + +using Tikz->formatter( format => '%d', ); -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); - }; - is $@, '', "$desc: no error"; - - unless (ref $exp eq 'ARRAY') { - $exp = [ split /\n/, $exp ]; - } - unshift @$exp, '\begin{tikzpicture}'; - push @$exp, '\end{tikzpicture}'; - - is_deeply $body, $exp, $desc; -} - sub failed_valid { my ($tc) = @_; qr/Validation failed for '\Q$tc\E'/; @@ -60,6 +44,26 @@ check $l, 'a line from two Tikz points', <<'RES'; \draw (-1cm,2cm) -- (3cm,-4cm) ; RES +# Arrow + +my $ar = eval { + Tikz->arrow($o, 1); +}; +is $@, '', 'creating an arrow from two points doesn\'t croak'; + +check $ar, 'an arrow from two points', <<'RES'; +\draw [->] (0cm,0cm) -- (1cm,0cm) ; +RES + +$ar = eval { + Tikz->arrow(2, dir => -i()); +}; +is $@, '', 'creating an arrow from a point and a direction doesn\'t croak'; + +check $ar, 'an arrow from a point and a direction', <<'RES'; +\draw [->] (2cm,0cm) -- (2cm,-1cm) ; +RES + # Polyline my $w = Tikz->point(3, -4); @@ -102,7 +106,7 @@ RES like $@, qr/at least two LaTeX::TikZ::Set::Point objects are needed in order to build a polyline/, "creating a $desc from only one Tikz point croaks"; $pl = eval { - Tikz->$polyline(qw/foo bar/); + Tikz->$polyline(qw); }; like $@, failed_valid('LaTeX::TikZ::Point::Autocoerce'), "creating a $desc from two string croaks"; } @@ -186,5 +190,35 @@ RES eval { Tikz->circle($o => -1); }; -like $@, qr/isn't a non-negative real number/, +like $@, failed_valid('__ANON__'), 'creating a circle with a negative radius croaks'; + +# Arc + +using Tikz->formatter( + format => "%.03f" +); + +my $arc = eval { + Tikz->arc(1, i, $o); +}; +is $@, '', 'creating a simple arc doesn\'t croak'; + +check $arc, 'simple arc', <<'RES'; +\begin{scope} +\clip (0.969cm,0.000cm) -- (1.085cm,0.000cm) -- (1.032cm,0.335cm) -- (0.878cm,0.638cm) -- (0.638cm,0.878cm) -- (0.335cm,1.032cm) -- (0.000cm,1.085cm) -- (0.000cm,0.969cm) -- cycle ; +\draw (0.000cm,0.000cm) circle (1.000cm) ; +\end{scope} +RES + +eval { + Tikz->arc(0, 1); +}; +my $err = quotemeta 'Tikz->arc($first_point, $second_point, $center)'; +like $@, qr/^$err/, 'creating an arc from only two points croaks'; + +eval { + Tikz->arc(0, 1, i); +}; +like $@, qr/The two first points aren't on a circle of center the last/, + 'creating an arc with two points not on a circle of center c croaks';