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 Tikz->chain(4 => '--' => [ -3, 2 ]),
43 Tikz->join('-|' => [ -1, 0 ], [ 0, 1 ]),
46 ->clip(Tikz->rectangle([0, -1] => [2, 3]));
49 $seq->$translate(Tikz->point(-1, 1));
51 is $@, '', 'translating a sequence doesn\'t croak';
53 check $seq, 'the original sequence', <<'RES';
55 \clip (0cm,-1cm) rectangle (2cm,3cm) ;
60 \clip (1cm,0cm) circle (1cm) ;
61 \draw (-1cm,0cm) -- (3cm,0cm) ;
63 \draw (4cm,0cm) -- (-3cm,2cm) (-1cm,0cm) -| (0cm,1cm) ;
67 check $seq2, 'the translated sequence', <<'RES';
69 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
74 \clip (0cm,1cm) circle (1cm) ;
75 \draw (-2cm,1cm) -- (2cm,1cm) ;
77 \draw (3cm,1cm) -- (-4cm,3cm) (-2cm,1cm) -| (-1cm,2cm) ;
83 '+LaTeX::TikZ::Mod' => sub { return },
86 is $@, '', 'creating a stripper doesn\'t croak';
88 $_->mod(Tikz->color('red')) for $seq2->kids;
93 is $@, '', 'stripping a sequence doesn\'t croak';
95 check $seq2, 'the original sequence', <<'RES';
96 \begin{scope} [color=red]
97 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
102 \clip (0cm,1cm) circle (1cm) ;
103 \draw (-2cm,1cm) -- (2cm,1cm) ;
105 \draw (3cm,1cm) -- (-4cm,3cm) (-2cm,1cm) -| (-1cm,2cm) ;
109 check $seq3, 'the stripped sequence', <<'RES';
113 \draw (-2cm,1cm) -- (2cm,1cm) ;
114 \draw (3cm,1cm) -- (-4cm,3cm) (-2cm,1cm) -| (-1cm,2cm) ;
119 '+LaTeX::TikZ::Mod' => sub { die "mod\n" },
120 '+LaTeX::TikZ::Set' => sub { die "set\n" },
123 is $@, '', 'creating a special functor with + rules doesn\'t croak';
125 eval { $seq->$special };
126 is $@, "set\n", 'special functor with + rules eats everything properly';
130 '+LaTeX::TikZ::Mod' => sub { die "mod\n" },
131 '+LaTeX::TikZ::Set' => sub { die "set\n" },
132 'LaTeX::TikZ::Set::Point' => sub { Tikz->point(7) },
133 'LaTeX::TikZ::Set::Path' => sub { Tikz->raw('moo') },
136 is $@, '', 'creating a special functor with + and normal rules doesn\'t croak';
138 my $res = eval { Tikz->point(3, 4)->$special };
139 is $@, '', 'special functor with + and normal rules orders its rules properly';
141 check $res, 'the result of the special functor', <<'RES';
145 $res = eval { Tikz->raw('hlagh')->$special };
147 'special functor with + and normal rules orders its rules properly again';
149 check $res, 'the result of the special functor', <<'RES';
158 is $@, '', 'creating a formatter object with an origin doesn\'t croak';
160 check $seq, 'a sequence translated by an origin', <<'RES';
162 \clip (-1cm,0cm) rectangle (1cm,4cm) ;
167 \clip (0cm,1cm) circle (1cm) ;
168 \draw (-2cm,1cm) -- (2cm,1cm) ;
170 \draw (3cm,1cm) -- (-4cm,3cm) (-2cm,1cm) -| (-1cm,2cm) ;