]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blob - t/01-api.t
Remove magic LaTeX::TikZ::Interface->import
[perl/modules/LaTeX-TikZ.git] / t / 01-api.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 5 + 20 + 12;
7
8 use LaTeX::TikZ;
9
10 ok(defined &Tikz,         'main::Tikz constant is defined');
11 is(prototype('Tikz'), '', 'main::Tikz is actually a constant');
12
13 {
14  package LaTeX::TikZ::TestAPI1;
15
16  eval {
17   LaTeX::TikZ->import(as => ':)');
18  };
19  ::like($@, qr/^Invalid name/, 'invalid name');
20 }
21
22 {
23  package LaTeX::TikZ::TestAPI2;
24
25  use LaTeX::TikZ as => 'T';
26
27  ::ok(defined &T,         'LaTeX::TikZ::TestAPI2::T constant is defined');
28  ::is(prototype('T'), '', 'LaTeX::TikZ::TestAPI2::T is actually a constant');
29 }
30
31 my @methods = qw/
32  formatter functor
33  raw
34  path seq
35  point line polyline closed_polyline rectangle circle arc arrow
36  raw_mod
37  clip layer
38  width color fill pattern
39 /;
40
41 for (@methods) {
42  ok(Tikz->can($_), "Tikz evaluates to something that ->can($_)");
43 }
44
45 require LaTeX::TikZ::Interface;
46
47 for my $name (undef, ':)') {
48  eval {
49   LaTeX::TikZ::Interface->register(
50    $name => sub { },
51   );
52  };
53  like $@, qr/^Invalid interface name/, 'invalid interface name';
54 }
55
56 eval {
57  LaTeX::TikZ::Interface->register(
58   'raw' => sub { },
59  );
60 };
61 like $@, qr/^'raw' is already defined/, 'already defined';
62
63 for my $code (undef, [ ]) {
64  eval {
65   LaTeX::TikZ::Interface->register(
66    'foo' => $code,
67   );
68  };
69  like $@, qr/^Invalid code reference/, 'invalid code';
70 }
71
72 eval {
73  LaTeX::TikZ::Interface->register(
74   'foo' => sub { @_ },
75  );
76 };
77 is $@,           '', 'registering foo doesn\'t croak';
78 ok(Tikz->can('foo'), 'Tikz evaluates to something that ->can(foo)');
79 is_deeply [ Tikz->foo('hello') ], [ Tikz, 'hello' ], 'Tikz->foo works';
80
81 eval {
82  LaTeX::TikZ::Interface->register(
83   'bar' => sub { @_ },
84   'baz' => undef,
85  );
86 };
87 like $@, qr/^Invalid code reference/, 'baz is invalid code';
88 ok(!Tikz->can('baz'), 'baz was not defined');
89 ok(Tikz->can('bar'),  'but bar was defined');
90 is_deeply [ Tikz->bar('bonjour') ], [ Tikz, 'bonjour' ], 'Tikz->bar works';