6 use Test::More tests => 10 + 2 * 7;
11 use LaTeX::TikZ::TestHelper;
13 using Tikz->formatter(
17 my $translate = eval {
19 'LaTeX::TikZ::Set::Point' => sub {
20 my ($functor, $set, $v) = @_;
33 is $@, '', 'creating a translator doesn\'t croak';
40 ->clip(Tikz->circle(1, 1))
42 ->clip(Tikz->rectangle([0, -1] => [2, 3]));
45 $seq->$translate(Tikz->point(-1, 1));
47 is $@, '', 'translating a sequence doesn\'t croak';
49 check $seq, 'the original sequence', <<'RES';
51 \clip (0cm,-1cm) rectangle (2cm,3cm) ;
56 \clip (1cm,0cm) circle (1cm) ;
57 \draw (-1cm,0cm) -- (3cm,0cm) ;
62 check $seq2, 'the translated sequence', <<'RES';
64 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
69 \clip (0cm,1cm) circle (1cm) ;
70 \draw (-2cm,1cm) -- (2cm,1cm) ;
77 '+LaTeX::TikZ::Mod' => sub { return },
80 is $@, '', 'creating a stripper doesn\'t croak';
82 $_->mod(Tikz->color('red')) for $seq2->kids;
87 is $@, '', 'stripping a sequence doesn\'t croak';
89 check $seq2, 'the original sequence', <<'RES';
90 \begin{scope} [color=red]
91 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
96 \clip (0cm,1cm) circle (1cm) ;
97 \draw (-2cm,1cm) -- (2cm,1cm) ;
102 check $seq3, 'the stripped sequence', <<'RES';
106 \draw (-2cm,1cm) -- (2cm,1cm) ;
111 '+LaTeX::TikZ::Mod' => sub { die "mod\n" },
112 '+LaTeX::TikZ::Set' => sub { die "set\n" },
115 is $@, '', 'creating a special functor with + rules doesn\'t croak';
117 eval { $seq->$special };
118 is $@, "set\n", 'special functor with + rules eats everything properly';
122 '+LaTeX::TikZ::Mod' => sub { die "mod\n" },
123 '+LaTeX::TikZ::Set' => sub { die "set\n" },
124 'LaTeX::TikZ::Set::Point' => sub { Tikz->point(7) },
125 'LaTeX::TikZ::Set::Op' => sub { Tikz->raw('moo') },
128 is $@, '', 'creating a special functor with + and normal rules doesn\'t croak';
130 my $res = eval { Tikz->point(3, 4)->$special };
131 is $@, '', 'special functor with + and normal rules orders its rules properly';
133 check $res, 'the result of the special functor', <<'RES';
137 $res = eval { Tikz->raw('hlagh')->$special };
139 'special functor with + and normal rules orders its rules properly again';
141 check $res, 'the result of the special functor', <<'RES';
150 is $@, '', 'creating a formatter object with an origin doesn\'t croak';
152 check $seq, 'a sequence translated by an origin', <<'RES';
154 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
159 \clip (0cm,1cm) circle (1cm) ;
160 \draw (-2cm,1cm) -- (2cm,1cm) ;