+package LaTeX::TikZ::TestHelper;
+
+use strict;
+use warnings;
+
+use Test::More ();
+
+use Any::Moose 'Exporter';
+
+any_moose('Exporter')->setup_import_methods(
+ as_is => [ qw<using check> ],
+);
+
+my $tikz;
+
+sub using {
+ $tikz = $_[0] if defined $_[0];
+
+ return $tikz;
+}
+
+sub check {
+ my ($set, $desc, $exp) = @_;
+
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ my ($head, $decl, $body) = eval {
+ $tikz->render(ref $set eq 'ARRAY' ? @$set : $set);
+ };
+ Test::More::is($@, '', "$desc: no error");
+
+ unless (ref $exp eq 'ARRAY') {
+ $exp = [ split /\n/, $exp ];
+ }
+ unshift @$exp, '\begin{tikzpicture}';
+ push @$exp, '\end{tikzpicture}';
+
+ Test::More::is_deeply($body, $exp, "$desc: body");
+
+ return $head, $decl, $body;
+}
+
+1;