]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/commitdiff
Fix Set::Path->add
authorVincent Pit <vince@profvince.com>
Sun, 18 Jul 2010 08:47:09 +0000 (10:47 +0200)
committerVincent Pit <vince@profvince.com>
Sun, 18 Jul 2010 08:47:09 +0000 (10:47 +0200)
lib/LaTeX/TikZ/Set/Path.pm
t/10-set.t

index b8d976827d04bd3431c7df07fed8d01c6295d2da..0b695c62c622cb27e30eeae6539716adb842ef2b 100644 (file)
@@ -42,9 +42,9 @@ my $ltspe_tc = find_type_constraint('LaTeX::TikZ::Set::Path::Elements');
 sub add {
  my $set = shift;
 
- $ltspe_tc->check($_) for @_;
+ $ltspe_tc->assert_valid($_) for @_;
 
- push @{$_[0]->_ops}, @_;
+ push @{$set->_ops}, @_;
 
  $set;
 }
index 029fccdd83df223520ced6af1f7972f5375645f4..69008aed5d948e3ed2cb011a2e6202bdf7a22c98 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9 + 2 * 6;
+use Test::More tests => 12 + 2 * 7;
 
 use LaTeX::TikZ;
 use LaTeX::TikZ::Formatter;
@@ -100,12 +100,40 @@ check $seq3, 'two different raw sets and an extended sequence', <<'RES';
 \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, $path ], 'two identical path sets', <<'RES';
-\draw foo bar baz ;
+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';