]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blob - t/10-set.t
Factor the check() test function in an helper test module
[perl/modules/LaTeX-TikZ.git] / t / 10-set.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 19 + 2 * 14;
7
8 use LaTeX::TikZ;
9
10 use lib 't/lib';
11 use LaTeX::TikZ::TestHelper;
12
13 using Tikz->formatter(
14  format => '%d',
15 );
16
17 my $foo = eval {
18  Tikz->raw('foo');
19 };
20 is $@, '', 'creating a raw set doesn\'t croak';
21
22 check $foo, 'one raw set', <<'RES';
23 \draw foo ;
24 RES
25
26 my $seq2 = eval {
27  Tikz->seq($foo, $foo);
28 };
29 is $@, '', 'creating a 2-sequence doesn\'t croak';
30
31 check $seq2, 'two identical raw sets', <<'RES';
32 \draw foo ;
33 \draw foo ;
34 RES
35
36 my $bar = eval {
37  Tikz->raw('bar');
38 };
39 is $@, '', 'creating another raw set doesn\'t croak';
40
41 $seq2 = eval {
42  Tikz->seq($foo, $bar);
43 };
44 is $@, '', 'creating another 2-sequence doesn\'t croak';
45
46 check $seq2, 'two different raw sets', <<'RES';
47 \draw foo ;
48 \draw bar ;
49 RES
50
51 my $seq3 = eval {
52  Tikz->seq($bar, $seq2, $foo);
53 };
54 is $@, '', 'creating a complex sequence doesn\'t croak';
55
56 check $seq3, 'two different raw sets and a sequence', <<'RES';
57 \draw bar ;
58 \draw foo ;
59 \draw bar ;
60 \draw foo ;
61 RES
62
63 my $baz = eval {
64  Tikz->raw('baz');
65 };
66 is $@, '', 'creating yet another raw set doesn\'t croak';
67
68 eval {
69  $foo->add($baz);
70 };
71 like $@, qr/Can't locate object method "add"/,
72                                          'adding something to a raw set croaks';
73
74 eval {
75  $seq2->add($baz, $baz);
76 };
77 is $@, '', 'adding something to a sequence set doesn\'t croak';
78
79 check $seq3, 'two different raw sets and an extended sequence', <<'RES';
80 \draw bar ;
81 \draw foo ;
82 \draw bar ;
83 \draw baz ;
84 \draw baz ;
85 \draw foo ;
86 RES
87
88 my $seq4 = eval {
89  Tikz->seq;
90 };
91 is $@, '', 'creating an empty sequence doesn\'t croak';
92
93 check $seq4, 'an empty sequence', '';
94
95 $seq4 = eval {
96  Tikz->seq(Tikz->seq);
97 };
98 is $@, '', 'creating a sequence that contains an empty sequence doesn\'t croak';
99
100 check $seq4, 'a sequence that contains an empty sequence', '';
101
102 $seq4 = eval {
103  Tikz->seq($foo, Tikz->seq);
104 };
105 is $@, '',
106  'creating a sequence that contains a set and an empty sequence doesn\'t croak';
107
108 check $seq4, 'a sequence that contains a set and an empty sequence', <<'RES';
109 \draw foo ;
110 RES
111
112 $seq4 = eval {
113  Tikz->seq(Tikz->seq, $foo);
114 };
115 is $@, '',
116  'creating a sequence that contains an empty sequence and a set doesn\'t croak';
117
118 check $seq4, 'a sequence that contains an empty sequence and a set', <<'RES';
119 \draw foo ;
120 RES
121
122 $seq4 = eval {
123  Tikz->seq($foo, $bar, Tikz->seq);
124 };
125 is $@, '',
126 'creating a sequence that contains 2 sets and an empty sequence doesn\'t croak';
127
128 check $seq4, 'a sequence that contains 2 sets and an empty sequence', <<'RES';
129 \draw foo ;
130 \draw bar ;
131 RES
132
133 $seq4 = eval {
134  Tikz->seq($foo, Tikz->seq, $bar);
135 };
136 is $@, '', 'creating a sequence that contains a set, an empty sequence, a set doesn\'t croak';
137
138 check $seq4, 'a sequence that contains a set, an empty sequence, a set',<<'RES';
139 \draw foo ;
140 \draw bar ;
141 RES
142
143 $seq4 = eval {
144  Tikz->seq(Tikz->seq, $foo, $bar);
145 };
146 is $@, '',
147 'creating a sequence that contains an empty sequence and 2 sets';
148
149 check $seq4, 'a sequence that contains an empty sequence and 2 sets', <<'RES';
150 \draw foo ;
151 \draw bar ;
152 RES
153
154 sub failed_valid {
155  my ($tc) = @_;
156  qr/Validation failed for '\Q$tc\E'/;
157 }
158
159 eval {
160  Tikz->path($foo, $seq2);
161 };
162 like $@, failed_valid('Maybe[ArrayRef[LaTeX::TikZ::Set::Op]]'),
163          'creating a path that contains a sequence croaks';
164
165 my $path = eval {
166  Tikz->path($foo, $bar, $baz);
167 };
168 is $@, '', 'creating a path set doesn\'t croak';
169
170 check $path, 'one path set', <<'RES';
171 \draw foo bar baz ;
172 RES
173
174 eval {
175  $path->add($foo);
176 };
177 is $@, '', 'adding something to a path set doesn\'t croak';
178
179 check Tikz->seq($path, $path), 'two identical path sets', <<'RES';
180 \draw foo bar baz foo ;
181 \draw foo bar baz foo ;
182 RES
183
184 eval {
185  $path->add($seq2);
186 };
187 like $@, failed_valid('LaTeX::TikZ::Set::Op'),
188          'adding a sequence to a path croaks';