]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/commitdiff
Fix drawing empty sequences
authorVincent Pit <vince@profvince.com>
Wed, 27 Oct 2010 22:36:44 +0000 (00:36 +0200)
committerVincent Pit <vince@profvince.com>
Wed, 27 Oct 2010 22:36:44 +0000 (00:36 +0200)
lib/LaTeX/TikZ/Set/Sequence.pm
t/10-set.t

index dfb30f73e19799542d05091a9847d11adbc34b79..afdc313813eaf7fea53e563d86db6b898a02f75c 100644 (file)
@@ -86,9 +86,12 @@ sub add {
 sub draw {
  my $set = shift;
 
+ my @kids = $set->kids;
+ return [ ] unless @kids;
+
  List::Util::reduce { LaTeX::TikZ::Scope::fold($a, $b) }
   map $_->draw(@_),
-   $set->kids;
+   @kids;
 }
 
 LaTeX::TikZ::Interface->register(
index 4ddac3c9d670ff68b9dc81a3dde2daaea4411531..6ff94ef58cb2b1f62ce2ddfe65b76c5243da88c5 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 12 + 2 * 7;
+use Test::More tests => 19 + 2 * 14;
 
 use LaTeX::TikZ;
 
@@ -101,6 +101,72 @@ check $seq3, 'two different raw sets and an extended sequence', <<'RES';
 \draw foo ;
 RES
 
+my $seq4 = eval {
+ Tikz->seq;
+};
+is $@, '', 'creating an empty sequence doesn\'t croak';
+
+check $seq4, 'an empty sequence', '';
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq);
+};
+is $@, '', 'creating a sequence that contains an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains an empty sequence', '';
+
+$seq4 = eval {
+ Tikz->seq($foo, Tikz->seq);
+};
+is $@, '',
+ 'creating a sequence that contains a set and an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains a set and an empty sequence', <<'RES';
+\draw foo ;
+RES
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq, $foo);
+};
+is $@, '',
+ 'creating a sequence that contains an empty sequence and a set doesn\'t croak';
+
+check $seq4, 'a sequence that contains an empty sequence and a set', <<'RES';
+\draw foo ;
+RES
+
+$seq4 = eval {
+ Tikz->seq($foo, $bar, Tikz->seq);
+};
+is $@, '',
+'creating a sequence that contains 2 sets and an empty sequence doesn\'t croak';
+
+check $seq4, 'a sequence that contains 2 sets and an empty sequence', <<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
+$seq4 = eval {
+ Tikz->seq($foo, Tikz->seq, $bar);
+};
+is $@, '', 'creating a sequence that contains a set, an empty sequence, a set doesn\'t croak';
+
+check $seq4, 'a sequence that contains a set, an empty sequence, a set',<<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
+$seq4 = eval {
+ Tikz->seq(Tikz->seq, $foo, $bar);
+};
+is $@, '',
+'creating a sequence that contains an empty sequence and 2 sets';
+
+check $seq4, 'a sequence that contains an empty sequence and 2 sets', <<'RES';
+\draw foo ;
+\draw bar ;
+RES
+
 sub failed_valid {
  my ($tc) = @_;
  qr/Validation failed for '\Q$tc\E'/;