]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/commitdiff
Test the API in t/01-api.t
authorVincent Pit <vince@profvince.com>
Sat, 17 Jul 2010 23:07:23 +0000 (01:07 +0200)
committerVincent Pit <vince@profvince.com>
Sun, 18 Jul 2010 00:42:19 +0000 (02:42 +0200)
MANIFEST
lib/LaTeX/TikZ/Mod/Raw.pm
t/01-api.t [new file with mode: 0644]

index a85376dd4d5d4360fbdd9f7a4e98bf0f6aaadf2e..812e6767ee7c9856a1636d0e85712e724894fb9d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -31,4 +31,5 @@ lib/LaTeX/TikZ/Set/Raw.pm
 lib/LaTeX/TikZ/Set/Rectangle.pm
 lib/LaTeX/TikZ/Set/Sequence.pm
 t/00-load.t
+t/01-api.t
 t/91-pod.t
index e7ff0fd37a0a45bbecd9a572b60c05be6b5206d7..c6e1a2c1ad51c99f79358049c7e962689fc6dd70 100644 (file)
@@ -37,7 +37,7 @@ sub declare { }
 
 sub apply { $_[0]->content }
 
-use LaTeX::TikZ::API raw_mode => sub {
+use LaTeX::TikZ::API raw_mod => sub {
  shift;
 
  __PACKAGE__->new(content => $_[0]);
diff --git a/t/01-api.t b/t/01-api.t
new file mode 100644 (file)
index 0000000..6bcada7
--- /dev/null
@@ -0,0 +1,89 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 5 + 13 + 12;
+
+use LaTeX::TikZ;
+
+ok(defined &Tikz,         'main::Tikz constant is defined');
+is(prototype('Tikz'), '', 'main::Tikz is actually a constant');
+
+{
+ package LaTeX::TikZ::TestAPI1;
+
+ eval {
+  LaTeX::TikZ->import(as => ':)');
+ };
+ ::like($@, qr/^Invalid name/, 'invalid name');
+}
+
+{
+ package LaTeX::TikZ::TestAPI2;
+
+ use LaTeX::TikZ as => 'T';
+
+ ::ok(defined &T,         'LaTeX::TikZ::TestAPI2::T constant is defined');
+ ::is(prototype('T'), '', 'LaTeX::TikZ::TestAPI2::T is actually a constant');
+}
+
+my @methods = qw/
+ raw
+ path seq
+ point line rectangle circle
+ raw_mod
+ clip layer
+ width color fill
+/;
+
+for (@methods) {
+ ok(Tikz->can($_), "Tikz evaluates to something that ->can($_)");
+}
+
+require LaTeX::TikZ::API;
+
+for my $name (undef, ':)') {
+ eval {
+  LaTeX::TikZ::API->import(
+   $name => sub { },
+  );
+ };
+ like $@, qr/^Invalid interface name/, 'invalid interface name';
+}
+
+eval {
+ LaTeX::TikZ::API->import(
+  'raw' => sub { },
+ );
+};
+like $@, qr/^'raw' is already defined/, 'already defined';
+
+for my $code (undef, [ ]) {
+ eval {
+  LaTeX::TikZ::API->import(
+   'foo' => $code,
+  );
+ };
+ like $@, qr/^Invalid code reference/, 'invalid code';
+}
+
+eval {
+ LaTeX::TikZ::API->import(
+  'foo' => sub { @_ },
+ );
+};
+is $@,           '', 'registering foo doesn\'t croak';
+ok(Tikz->can('foo'), 'Tikz evaluates to something that ->can(foo)');
+is_deeply [ Tikz->foo('hello') ], [ Tikz, 'hello' ], 'Tikz->foo works';
+
+eval {
+ LaTeX::TikZ::API->import(
+  'bar' => sub { @_ },
+  'baz' => undef,
+ );
+};
+like $@, qr/^Invalid code reference/, 'baz is invalid code';
+ok(!Tikz->can('baz'), 'baz was not defined');
+ok(Tikz->can('bar'),  'but bar was defined');
+is_deeply [ Tikz->bar('bonjour') ], [ Tikz, 'bonjour' ], 'Tikz->bar works';