]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blob - t/lib/LaTeX/TikZ/TestHelper.pm
3fc1fc0d36eb6d1a7fbe0ea1c01f8b855c5f4fd9
[perl/modules/LaTeX-TikZ.git] / t / lib / LaTeX / TikZ / TestHelper.pm
1 package LaTeX::TikZ::TestHelper;
2
3 use strict;
4 use warnings;
5
6 use Test::More ();
7
8 use Mouse::Exporter;
9
10 Mouse::Exporter->setup_import_methods(
11  as_is => [ qw<using check is_point_ok> ],
12 );
13
14 my $tikz;
15
16 sub using {
17  $tikz = $_[0] if defined $_[0];
18
19  return $tikz;
20 }
21
22 sub check {
23  my ($set, $desc, $exp) = @_;
24
25  local $Test::Builder::Level = $Test::Builder::Level + 1;
26
27  my ($head, $decl, $body) = eval {
28   $tikz->render(ref $set eq 'ARRAY' ? @$set : $set);
29  };
30  Test::More::is($@, '', "$desc: no error");
31
32  unless (ref $exp eq 'ARRAY') {
33   $exp = [ split /\n/, $exp ];
34  }
35  unshift @$exp, '\begin{tikzpicture}';
36  push    @$exp, '\end{tikzpicture}';
37
38  Test::More::is_deeply($body, $exp, "$desc: body");
39
40  return $head, $decl, $body;
41 }
42
43 sub is_point_ok {
44  my ($p, $x, $y, $desc) = @_;
45
46  my $ok = Test::More::isa_ok($p, 'LaTeX::TikZ::Point', "$desc isa point");
47  if ($ok) {
48   Test::More::cmp_ok($p->x, '==', $x, "$desc x coordinate is right");
49   Test::More::cmp_ok($p->y, '==', $y, "$desc y coordinate is right");
50  } else {
51   Test::More::fail("$desc placeholder $_") for 1, 2;
52  }
53 }
54
55 1;