+# 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);
+
+for my $closed (0, 1) {
+ my $polyline = $closed ? 'closed_polyline' : 'polyline';
+ my $cycle = $closed ? '-- cycle ' : '';
+ my $desc = $closed ? 'closed polyline' : 'polyline';
+
+ my $pl = eval {
+ Tikz->$polyline($o, $z);
+ };
+ is $@, '', "creating a $desc from two Tikz points doesn't croak";
+
+ check $pl, "a $desc from two Tikz points", <<"RES";
+\\draw (0cm,0cm) -- (1cm,2cm) $cycle;
+RES
+
+ $pl = eval {
+ Tikz->$polyline($o, $z, $w);
+ };
+ is $@, '', "creating a $desc from three Tikz points doesn't croak";
+
+ check $pl, "a $desc from three Tikz points", <<"RES";
+\\draw (0cm,0cm) -- (1cm,2cm) -- (3cm,-4cm) $cycle;
+RES
+
+ $pl = eval {
+ Tikz->$polyline(-1, (2-3*i), [-4, 5]);
+ };
+ is $@, '', "creating a $desc from three Tikz points doesn't croak";
+
+ check $pl, "a $desc from three Tikz points", <<"RES";
+\\draw (-1cm,0cm) -- (2cm,-3cm) -- (-4cm,5cm) $cycle;
+RES
+
+ $pl = eval {
+ Tikz->$polyline($o);
+ };
+ 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/);
+ };
+ like $@, failed_valid('LaTeX::TikZ::Point::Autocoerce'), "creating a $desc from two string croaks";
+}
+